dmitry Wed Jun 11 09:01:56 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/main php_streams.h
/php-src/main/streams streams.c
/php-src/ext/standard dir.c
Log:
closeder/readdir/rewinddir must work only with directories
http://cvs.php.net/viewvc.cgi/php-src/main/php_streams.h?r1=1.103.2.1.2.4.2.3&r2=1.103.2.1.2.4.2.4&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.3
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.3 Thu Mar 27 10:33:40 2008
+++ php-src/main/php_streams.h Wed Jun 11 09:01:56 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_streams.h,v 1.103.2.1.2.4.2.3 2008/03/27 10:33:40 dmitry Exp $ */
+/* $Id: php_streams.h,v 1.103.2.1.2.4.2.4 2008/06/11 09:01:56 dmitry Exp $ */
#ifndef PHP_STREAMS_H
#define PHP_STREAMS_H
@@ -181,6 +181,8 @@
#define PHP_STREAM_FLAG_NO_CLOSE 32
+#define PHP_STREAM_FLAG_IS_DIR 64
+
struct _php_stream {
php_stream_ops *ops;
void *abstract; /* convenience pointer for abstraction
*/
http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.82.2.6.2.18.2.9&r2=1.82.2.6.2.18.2.10&diff_format=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.82.2.6.2.18.2.9
php-src/main/streams/streams.c:1.82.2.6.2.18.2.10
--- php-src/main/streams/streams.c:1.82.2.6.2.18.2.9 Mon Apr 28 22:39:54 2008
+++ php-src/main/streams/streams.c Wed Jun 11 09:01:56 2008
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.82.2.6.2.18.2.9 2008/04/28 22:39:54 cellog Exp $ */
+/* $Id: streams.c,v 1.82.2.6.2.18.2.10 2008/06/11 09:01:56 dmitry Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -1724,7 +1724,7 @@
if (stream) {
stream->wrapper = wrapper;
- stream->flags |= PHP_STREAM_FLAG_NO_BUFFER;
+ stream->flags |= PHP_STREAM_FLAG_NO_BUFFER |
PHP_STREAM_FLAG_IS_DIR;
}
} else if (wrapper) {
php_stream_wrapper_log_error(wrapper, options ^ REPORT_ERRORS
TSRMLS_CC, "not implemented");
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dir.c?r1=1.147.2.3.2.12.2.6&r2=1.147.2.3.2.12.2.7&diff_format=u
Index: php-src/ext/standard/dir.c
diff -u php-src/ext/standard/dir.c:1.147.2.3.2.12.2.6
php-src/ext/standard/dir.c:1.147.2.3.2.12.2.7
--- php-src/ext/standard/dir.c:1.147.2.3.2.12.2.6 Mon Mar 10 22:12:36 2008
+++ php-src/ext/standard/dir.c Wed Jun 11 09:01:56 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: dir.c,v 1.147.2.3.2.12.2.6 2008/03/10 22:12:36 felipe Exp $ */
+/* $Id: dir.c,v 1.147.2.3.2.12.2.7 2008/06/11 09:01:56 dmitry Exp $ */
/* {{{ includes/startup/misc */
@@ -260,6 +260,11 @@
FETCH_DIRP();
+ if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid
Directory resource", dirp->rsrc_id);
+ RETURN_FALSE;
+ }
+
rsrc_id = dirp->rsrc_id;
zend_list_delete(dirp->rsrc_id);
@@ -360,6 +365,11 @@
FETCH_DIRP();
+ if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid
Directory resource", dirp->rsrc_id);
+ RETURN_FALSE;
+ }
+
php_stream_rewinddir(dirp);
}
/* }}} */
@@ -374,6 +384,11 @@
FETCH_DIRP();
+ if (!(dirp->flags & PHP_STREAM_FLAG_IS_DIR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a valid
Directory resource", dirp->rsrc_id);
+ RETURN_FALSE;
+ }
+
if (php_stream_readdir(dirp, &entry)) {
RETURN_STRINGL(entry.d_name, strlen(entry.d_name), 1);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php