diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 08e0781cd..761df45fb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,13 @@ +2005-09-16 Christopher Faylor + + * environ.cc (environ_init): Protect with a 'myfault' in case + GetEnvironmentStrings misbehaves. + +2005-09-16 Christopher Faylor + + * environ.cc (environ_init): Add debugging output with value returned + from GetEnvironmentStrings. + 2005-09-16 Christopher Faylor * environ.cc (environ_init): Issue an error if GetEnvironmentStrings diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 4029cd624..45e1ca7bd 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -706,6 +706,10 @@ environ_init (char **envp, int envc) bool envp_passed_in; bool got_something_from_registry; static char NO_COPY cygterm[] = "TERM=cygwin"; + myfault efault; + + if (efault.faulted ()) + api_fatal ("internal error reading the windows environment - too many environment variables?"); static int initted; if (!initted) @@ -759,6 +763,7 @@ environ_init (char **envp, int envc) system_printf ("GetEnvironmentStrings returned NULL, %E"); return; } + debug_printf ("GetEnvironmentStrings returned %p - \"%s\"", rawenv, rawenv); /* Current directory information is recorded as variables of the form "=X:=X:\foo\bar; these must be changed into something legal