cvs: php-src /ext/standard php_fopen_wrapper.c

From: Date: Thu, 21 Jun 2007 12:42:58 +0000
Subject: cvs: php-src /ext/standard php_fopen_wrapper.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-44902@lists.php.net to get a copy of this message
dmitry Thu Jun 21 12:42:58 2007 UTC Modified files: /php-src/ext/standard php_fopen_wrapper.c Log: Proper fix for bug #39215 Inappropriate close of stdin/stdout/stderr http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_fopen_wrapper.c?r1=1.59&r2=1.60&diff_format=u Index: php-src/ext/standard/php_fopen_wrapper.c diff -u php-src/ext/standard/php_fopen_wrapper.c:1.59 php-src/ext/standard/php_fopen_wrapper.c:1.60 --- php-src/ext/standard/php_fopen_wrapper.c:1.59 Wed Jan 24 21:43:47 2007 +++ php-src/ext/standard/php_fopen_wrapper.c Thu Jun 21 12:42:58 2007 @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrapper.c,v 1.59 2007/01/24 21:43:47 pollita Exp $ */ +/* $Id: php_fopen_wrapper.c,v 1.60 2007/06/21 12:42:58 dmitry Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -159,6 +159,7 @@ php_stream * stream = NULL; char *p, *token, *pathdup; long max_memory; + FILE *file = NULL; if (!strncasecmp(path, "php://", 6)) { path += 6; @@ -212,6 +213,7 @@ fd = dup(fd); } else { cli_in = 1; + file = stdin; } } else { fd = dup(STDIN_FILENO); @@ -224,6 +226,7 @@ fd = dup(fd); } else { cli_out = 1; + file = stdout; } } else { fd = dup(STDOUT_FILENO); @@ -236,6 +239,7 @@ fd = dup(fd); } else { cli_err = 1; + file = stderr; } } else { fd = dup(STDERR_FILENO); @@ -287,10 +291,14 @@ /* failed to dup */ return NULL; } - - stream = php_stream_fopen_from_fd(fd, mode, NULL); - if (stream == NULL) { - close(fd); + + if (file) { + stream = php_stream_fopen_from_file(file, mode); + } else { + stream = php_stream_fopen_from_fd(fd, mode, NULL); + if (stream == NULL) { + close(fd); + } } return stream;

« previous php.cvs (#44902) next »