]> granicus.if.org Git - php/commitdiff
pcntl_exec() should inherit environment in case it's not provided as an argument
authorDmitry Stogov <dmitry@php.net>
Wed, 30 Sep 2009 13:04:28 +0000 (13:04 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 30 Sep 2009 13:04:28 +0000 (13:04 +0000)
ext/pcntl/pcntl.c

index bee1693f1d8b843362b4d22814b96cf166b70414..20f0cd39f21a7952be41478b8fa568b9fc151f12 100755 (executable)
@@ -727,16 +727,19 @@ PHP_FUNCTION(pcntl_exec)
                        if (return_val == HASH_KEY_IS_LONG) efree(key);
                }
                *(pair) = NULL;
-       }
-       
-       if (execve(path, argv, envp) == -1) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: (errno %d) %s", errno, strerror(errno));
-       }
+
+               if (execve(path, argv, envp) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: (errno %d) %s", errno, strerror(errno));
+               }
        
-       /* Cleanup */
-       if (envp != NULL) {
+               /* Cleanup */
                for (pair = envp; *pair != NULL; pair++) efree(*pair);
                efree(envp);
+       } else {
+
+               if (execv(path, argv) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: (errno %d) %s", errno, strerror(errno));
+               }
        }
 
        efree(argv);