From: Wez Furlong Date: Mon, 19 Apr 2004 17:41:39 +0000 (+0000) Subject: Fix #27865; don't dup STDIN, STDOUT or STDERR when running under CLI. X-Git-Tag: php-5.0.0RC2RC2~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=daa90c915cafcedc8fd56812c78c14f8b823180f;p=php Fix #27865; don't dup STDIN, STDOUT or STDERR when running under CLI. --- diff --git a/NEWS b/NEWS index 56f491f31f..3db0e5f666 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,7 @@ PHP NEWS (Dmitry) - Fixed bug #27997 (SPL: Crash with getInnerIterator()). (Marcus) - Fixed bug #27928 (sqlite incorrectly handles invalid filenames). (Ilia) +- Fixed bug #27865 (STDIN, STDOUT, STDERR are dup()d under CLI). (Wez) - Fixed bug #27821 (xml_parse() segfaults when xml_set_object() is called from class method). (Andi, Rob) - Fixed bug #27742 (WDSL SOAP Parsing Schema bug). (Dmitry) diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index ccf256015a..4e53594326 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -166,11 +166,11 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch } if (!strcasecmp(path, "stdin")) { - fd = dup(STDIN_FILENO); + fd = !strcmp(sapi_module.name, "cli") ? STDIN_FILENO : dup(STDIN_FILENO); } else if (!strcasecmp(path, "stdout")) { - fd = dup(STDOUT_FILENO); + fd = !strcmp(sapi_module.name, "cli") ? STDOUT_FILENO : dup(STDOUT_FILENO); } else if (!strcasecmp(path, "stderr")) { - fd = dup(STDERR_FILENO); + fd = !strcmp(sapi_module.name, "cli") ? STDERR_FILENO : dup(STDERR_FILENO); } else if (!strncasecmp(path, "filter/", 7)) { /* Save time/memory when chain isn't specified */ if (strchr(mode, 'r') || strchr(mode, '+')) {