felipe Tue Jul 22 14:09:24 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/standard file.c fsock.c proc_open.c streamsfuncs.c /php-src/ext/standard/tests/file fscanf_variation10.phpt fscanf_variation16.phpt fscanf_variation22.phpt fscanf_variation29.phpt fscanf_variation35.phpt fscanf_variation4.phpt fscanf_variation41.phpt fscanf_variation47.phpt /php-src/main php_streams.h /php-src/sapi/cli php_cli.c Log: - MFH: Fixed bug #44246 (closedir() accepts a file resource opened by fopen())
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.409.2.6.2.28.2.17&r2=1.409.2.6.2.28.2.18&diff_format=u Index: php-src/ext/standard/file.c diff -u php-src/ext/standard/file.c:1.409.2.6.2.28.2.17 php-src/ext/standard/file.c:1.409.2.6.2.28.2.18 --- php-src/ext/standard/file.c:1.409.2.6.2.28.2.17 Mon Jul 21 11:46:18 2008 +++ php-src/ext/standard/file.c Tue Jul 22 14:09:24 2008 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: file.c,v 1.409.2.6.2.28.2.17 2008/07/21 11:46:18 jani Exp $ */ +/* $Id: file.c,v 1.409.2.6.2.28.2.18 2008/07/22 14:09:24 felipe Exp $ */ /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */ @@ -856,6 +856,8 @@ stream = php_stream_fopen_tmpfile(); if (stream) { + stream->flags |= PHP_STREAM_FLAG_FCLOSE; + php_stream_to_zval(stream, return_value); } else { RETURN_FALSE; @@ -885,6 +887,8 @@ if (stream == NULL) { RETURN_FALSE; } + + stream->flags |= PHP_STREAM_FLAG_FCLOSE; php_stream_to_zval(stream, return_value); } @@ -902,6 +906,12 @@ } PHP_STREAM_TO_ZVAL(stream, &arg1); + + if (!(stream->flags & PHP_STREAM_FLAG_FCLOSE)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid stream resource", stream->rsrc_id); + RETURN_FALSE; + } + if (!stream->is_persistent) { zend_list_delete(stream->rsrc_id); } else { http://cvs.php.net/viewvc.cgi/php-src/ext/standard/fsock.c?r1=1.121.2.1.2.1.2.1&r2=1.121.2.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/fsock.c diff -u php-src/ext/standard/fsock.c:1.121.2.1.2.1.2.1 php-src/ext/standard/fsock.c:1.121.2.1.2.1.2.2 --- php-src/ext/standard/fsock.c:1.121.2.1.2.1.2.1 Mon Dec 31 07:17:14 2007 +++ php-src/ext/standard/fsock.c Tue Jul 22 14:09:24 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fsock.c,v 1.121.2.1.2.1.2.1 2007/12/31 07:17:14 sebastian Exp $ */ +/* $Id: fsock.c,v 1.121.2.1.2.1.2.2 2008/07/22 14:09:24 felipe Exp $ */ #include "php.h" #include "php_globals.h" @@ -79,6 +79,8 @@ stream = php_stream_xport_create(hostname, hostname_len, ENFORCE_SAFE_MODE | REPORT_ERRORS, STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT, hashkey, &tv, NULL, &errstr, &err); + stream->flags |= PHP_STREAM_FLAG_FCLOSE; + if (port > 0) { efree(hostname); } http://cvs.php.net/viewvc.cgi/php-src/ext/standard/proc_open.c?r1=1.36.2.1.2.17.2.2&r2=1.36.2.1.2.17.2.3&diff_format=u Index: php-src/ext/standard/proc_open.c diff -u php-src/ext/standard/proc_open.c:1.36.2.1.2.17.2.2 php-src/ext/standard/proc_open.c:1.36.2.1.2.17.2.3 --- php-src/ext/standard/proc_open.c:1.36.2.1.2.17.2.2 Tue Apr 8 08:42:24 2008 +++ php-src/ext/standard/proc_open.c Tue Jul 22 14:09:24 2008 @@ -15,7 +15,7 @@ | Author: Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: proc_open.c,v 1.36.2.1.2.17.2.2 2008/04/08 08:42:24 jani Exp $ */ +/* $Id: proc_open.c,v 1.36.2.1.2.17.2.3 2008/07/22 14:09:24 felipe Exp $ */ #if 0 && (defined(__linux__) || defined(sun) || defined(__IRIX__)) # define _BSD_SOURCE /* linux wants this when XOPEN mode is on */ @@ -969,7 +969,7 @@ zval *retfp; /* nasty hack; don't copy it */ - stream->flags |= PHP_STREAM_FLAG_NO_SEEK; + stream->flags |= PHP_STREAM_FLAG_NO_SEEK | PHP_STREAM_FLAG_FCLOSE; MAKE_STD_ZVAL(retfp); php_stream_to_zval(stream, retfp); http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.58.2.6.2.15.2.17&r2=1.58.2.6.2.15.2.18&diff_format=u Index: php-src/ext/standard/streamsfuncs.c diff -u php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.17 php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.18 --- php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.15.2.17 Mon Jul 21 16:16:30 2008 +++ php-src/ext/standard/streamsfuncs.c Tue Jul 22 14:09:24 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.c,v 1.58.2.6.2.15.2.17 2008/07/21 16:16:30 jani Exp $ */ +/* $Id: streamsfuncs.c,v 1.58.2.6.2.15.2.18 2008/07/22 14:09:24 felipe Exp $ */ #include "php.h" #include "php_globals.h" @@ -126,6 +126,7 @@ STREAM_XPORT_CLIENT | (flags & PHP_STREAM_CLIENT_CONNECT ? STREAM_XPORT_CONNECT : 0) | (flags & PHP_STREAM_CLIENT_ASYNC_CONNECT ? STREAM_XPORT_CONNECT_ASYNC : 0), hashkey, &tv, context, &errstr, &err); + if (stream == NULL) { /* host might contain binary characters */ @@ -154,6 +155,8 @@ RETURN_FALSE; } + stream->flags |= PHP_STREAM_FLAG_FCLOSE; + if (errstr) { efree(errstr); } @@ -200,6 +203,8 @@ stream = php_stream_xport_create(host, host_len, ENFORCE_SAFE_MODE | REPORT_ERRORS, STREAM_XPORT_SERVER | flags, NULL, NULL, context, &errstr, &err); + + stream->flags |= PHP_STREAM_FLAG_FCLOSE; if (stream == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "unable to connect to %s (%s)", host, errstr == NULL ? "Unknown error" : errstr); @@ -265,7 +270,9 @@ NULL, NULL, &tv, &errstr TSRMLS_CC) && clistream) { - + + clistream->flags |= PHP_STREAM_FLAG_FCLOSE; + if (peername) { ZVAL_STRINGL(zpeername, peername, peername_len, 0); } http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation10.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation10.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation10.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation10.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation10.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation10.phpt Tue Jul 22 14:09:24 2008 @@ -68,7 +68,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation16.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation16.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation16.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation16.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation16.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation16.phpt Tue Jul 22 14:09:24 2008 @@ -67,7 +67,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation22.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation22.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation22.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation22.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation22.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation22.phpt Tue Jul 22 14:09:24 2008 @@ -67,7 +67,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation29.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation29.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation29.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation29.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation29.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation29.phpt Tue Jul 22 14:09:24 2008 @@ -68,7 +68,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation35.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation35.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation35.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation35.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation35.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation35.phpt Tue Jul 22 14:09:24 2008 @@ -63,7 +63,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation4.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation4.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation4.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation4.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation4.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation4.phpt Tue Jul 22 14:09:24 2008 @@ -64,7 +64,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation41.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation41.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation41.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation41.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation41.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation41.phpt Tue Jul 22 14:09:24 2008 @@ -63,7 +63,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_variation47.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_variation47.phpt diff -u php-src/ext/standard/tests/file/fscanf_variation47.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_variation47.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_variation47.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_variation47.phpt Tue Jul 22 14:09:24 2008 @@ -63,7 +63,7 @@ // closing the resources fclose($fp); -fclose($dfp); +closedir($dfp); echo "\n*** Done ***"; ?> http://cvs.php.net/viewvc.cgi/php-src/main/php_streams.h?r1=1.103.2.1.2.4.2.4&r2=1.103.2.1.2.4.2.5&diff_format=u Index: php-src/main/php_streams.h diff -u php-src/main/php_streams.h:1.103.2.1.2.4.2.4 php-src/main/php_streams.h:1.103.2.1.2.4.2.5 --- php-src/main/php_streams.h:1.103.2.1.2.4.2.4 Wed Jun 11 09:01:56 2008 +++ php-src/main/php_streams.h Tue Jul 22 14:09:24 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_streams.h,v 1.103.2.1.2.4.2.4 2008/06/11 09:01:56 dmitry Exp $ */ +/* $Id: php_streams.h,v 1.103.2.1.2.4.2.5 2008/07/22 14:09:24 felipe Exp $ */ #ifndef PHP_STREAMS_H #define PHP_STREAMS_H @@ -183,6 +183,8 @@ #define PHP_STREAM_FLAG_IS_DIR 64 +#define PHP_STREAM_FLAG_FCLOSE 128 + struct _php_stream { php_stream_ops *ops; void *abstract; /* convenience pointer for abstraction */ http://cvs.php.net/viewvc.cgi/php-src/sapi/cli/php_cli.c?r1=1.129.2.13.2.22.2.8&r2=1.129.2.13.2.22.2.9&diff_format=u Index: php-src/sapi/cli/php_cli.c diff -u php-src/sapi/cli/php_cli.c:1.129.2.13.2.22.2.8 php-src/sapi/cli/php_cli.c:1.129.2.13.2.22.2.9 --- php-src/sapi/cli/php_cli.c:1.129.2.13.2.22.2.8 Tue Mar 25 21:58:29 2008 +++ php-src/sapi/cli/php_cli.c Tue Jul 22 14:09:24 2008 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_cli.c,v 1.129.2.13.2.22.2.8 2008/03/25 21:58:29 helly Exp $ */ +/* $Id: php_cli.c,v 1.129.2.13.2.22.2.9 2008/07/22 14:09:24 felipe Exp $ */ #include "php.h" #include "php_globals.h" @@ -501,6 +501,10 @@ if (s_err) php_stream_close(s_err); return; } + + s_in->flags |= PHP_STREAM_FLAG_FCLOSE; + s_out->flags |= PHP_STREAM_FLAG_FCLOSE; + s_err->flags |= PHP_STREAM_FLAG_FCLOSE; #if PHP_DEBUG /* do not close stdout and stderr */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php