iliaa Fri Nov 3 13:34:39 2006 UTC
Modified files:
/php-src/ext/standard php_fopen_wrapper.c
Log:
MFB: Fixed bug #39215 (Inappropriate close of stdin/stdout/stderr).
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_fopen_wrapper.c?r1=1.54&r2=1.55&diff_format=u
Index: php-src/ext/standard/php_fopen_wrapper.c
diff -u php-src/ext/standard/php_fopen_wrapper.c:1.54
php-src/ext/standard/php_fopen_wrapper.c:1.55
--- php-src/ext/standard/php_fopen_wrapper.c:1.54 Tue May 16 14:12:52 2006
+++ php-src/ext/standard/php_fopen_wrapper.c Fri Nov 3 13:34:39 2006
@@ -17,7 +17,7 @@
| Hartmut Holzgraefe <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_fopen_wrapper.c,v 1.54 2006/05/16 14:12:52 iliaa Exp $ */
+/* $Id: php_fopen_wrapper.c,v 1.55 2006/11/03 13:34:39 iliaa Exp $ */
#include <stdio.h>
#include <stdlib.h>
@@ -191,11 +191,41 @@
}
if (!strcasecmp(path, "stdin")) {
- fd = !strcmp(sapi_module.name, "cli") ? STDIN_FILENO :
dup(STDIN_FILENO);
+ if (!strcmp(sapi_module.name, "cli")) {
+ static int cli_in = 0;
+ fd = STDIN_FILENO;
+ if (cli_in) {
+ fd = dup(fd);
+ } else {
+ cli_in = 1;
+ }
+ } else {
+ fd = dup(STDIN_FILENO);
+ }
} else if (!strcasecmp(path, "stdout")) {
- fd = !strcmp(sapi_module.name, "cli") ? STDOUT_FILENO :
dup(STDOUT_FILENO);
+ if (!strcmp(sapi_module.name, "cli")) {
+ static int cli_out = 0;
+ fd = STDOUT_FILENO;
+ if (cli_out++) {
+ fd = dup(fd);
+ } else {
+ cli_out = 1;
+ }
+ } else {
+ fd = dup(STDOUT_FILENO);
+ }
} else if (!strcasecmp(path, "stderr")) {
- fd = !strcmp(sapi_module.name, "cli") ? STDERR_FILENO :
dup(STDERR_FILENO);
+ if (!strcmp(sapi_module.name, "cli")) {
+ static int cli_err = 0;
+ fd = STDERR_FILENO;
+ if (cli_err++) {
+ fd = dup(fd);
+ } else {
+ cli_err = 1;
+ }
+ } else {
+ fd = dup(STDERR_FILENO);
+ }
} else if (!strncasecmp(path, "filter/", 7)) {
/* Save time/memory when chain isn't specified */
if (strchr(mode, 'r') || strchr(mode, '+')) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php