]> granicus.if.org Git - php/commitdiff
MFH: revert patch that causes invalid reads/crashes on Linux
authorAntony Dovgal <tony2001@php.net>
Mon, 12 May 2008 08:47:29 +0000 (08:47 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 12 May 2008 08:47:29 +0000 (08:47 +0000)
NEWS
ext/standard/basic_functions.c

diff --git a/NEWS b/NEWS
index 791ae06594c5fa441373b262ea682b4130d10af6..d665e31c29527d8f5f9aff367bf1e769b5f3be37 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,8 +5,6 @@ PHP                                                                        NEWS
   functions. (Andrey)
 - Fixed bug #44891 Memory leak using registerPHPFunctions and XSLT Variable 
   as function parameter. (Rob)
-- Fixed bug #44836 (putenv() crashes, avoid direct reference of environ in    
-  POSIX systems). (Ilia, delphij at FreeBSD dot org)
 - Fixed bug #44830 (Very minor issue with backslash in heredoc). (Matt)
 - Fixed bug #44811 (Improve error message when creating a new SoapClient that 
   contains invalid data). (Markus Fischer, David C)
index 330f717c694ddab7e26843f9cf41bf76301fb608..cec0b1f636c4289a48d193ad94cdde07574e1559 100644 (file)
@@ -3859,7 +3859,9 @@ static void php_putenv_destructor(putenv_entry *pe)
                SetEnvironmentVariable(pe->key, "bugbug");
 #endif
                putenv(pe->previous_value);
+# if defined(PHP_WIN32)
                efree(pe->previous_value);
+# endif
        } else {
 # if HAVE_UNSETENV
                unsetenv(pe->key);
@@ -4459,8 +4461,12 @@ PHP_FUNCTION(putenv)
                pe.previous_value = NULL;
                for (env = environ; env != NULL && *env != NULL; env++) {
                        if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') {  /* found it */
-                               /* must copy previous value because putenv can free the string without notice */
+#if defined(PHP_WIN32)
+                               /* must copy previous value because MSVCRT's putenv can free the string without notice */
                                pe.previous_value = estrdup(*env);
+#else
+                               pe.previous_value = *env;
+#endif
                                break;
                        }
                }