svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt branches/PHP_5_3/main/streams/userspace.c
trunk/ext/standard/tests/streams/bug53903.phpt trunk/main/streams/userspace.c
| From: | Gustavo André dos Santos Lopes | Date: | Tue, 01 Feb 2011 22:55:17 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt branches/PHP_5_3/main/streams/userspace.c trunk/ext/standard/tests/streams/bug53903.phpt trunk/main/streams/userspace.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-64490@lists.php.net to get a copy of this message | ||
cataphract Tue, 01 Feb 2011 22:55:17 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=307934
Log:
- Fixed bug #53903 (userspace stream stat callback does not separate the
elements of the returned array before converting them).
Bug: http://bugs.php.net/53903 (Assigned)
streamwrapper/stream_stat causes problems
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
A php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt
U php/php-src/branches/PHP_5_3/main/streams/userspace.c
A php/php-src/trunk/ext/standard/tests/streams/bug53903.phpt
U php/php-src/trunk/main/streams/userspace.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2011-02-01 20:59:25 UTC (rev 307933)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-02-01 22:55:17 UTC (rev 307934)
@@ -140,6 +140,8 @@
- Streams:
. Implemented FR #26158 (open arbitrary file descriptor with fopen). (Gustavo)
+ . Fixed bug #53903 (userspace stream stat callback does not separate the
+ elements of the returned array before converting them). (Gustavo)
- XSL extension:
. Fixed memory leaked introduced by the NULL poisoning patch.
Added: php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/streams/bug53903.phpt 2011-02-01 22:55:17 UTC
(rev 307934)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #53903 streamwrapper/stream_stat causes problems
+--FILE--
+<?php
+
+class sw {
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ return true;
+ }
+
+ public function stream_stat() {
+ return array(
+ 'atime' => $this->undefined,
+ );
+ }
+
+}
+stream_wrapper_register('sx', 'sw') or die('failed');
+
+fstat(fopen('sx://test', 'r'));
+
+$s[] = 1; // Cannot use a scalar value as an array
+
+print_r($s);
+--EXPECTF--
+Notice: Undefined property: sw::$undefined in %s on line %d
+Array
+(
+ [0] => 1
+)
+
Modified: php/php-src/branches/PHP_5_3/main/streams/userspace.c
===================================================================
--- php/php-src/branches/PHP_5_3/main/streams/userspace.c 2011-02-01 20:59:25 UTC (rev 307933)
+++ php/php-src/branches/PHP_5_3/main/streams/userspace.c 2011-02-01 22:55:17 UTC (rev 307934)
@@ -856,6 +856,7 @@
#define STAT_PROP_ENTRY_EX(name, name2) \
if (SUCCESS == zend_hash_find(Z_ARRVAL_P(array), #name, sizeof(#name), (void**)&elem)) { \
+ SEPARATE_ZVAL(elem); \
convert_to_long(*elem); \
ssb->sb.st_##name2 = Z_LVAL_PP(elem); \
}
Added: php/php-src/trunk/ext/standard/tests/streams/bug53903.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/streams/bug53903.phpt (rev 0)
+++ php/php-src/trunk/ext/standard/tests/streams/bug53903.phpt 2011-02-01 22:55:17 UTC (rev 307934)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #53903 streamwrapper/stream_stat causes problems
+--FILE--
+<?php
+
+class sw {
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ return true;
+ }
+
+ public function stream_stat() {
+ return array(
+ 'atime' => $this->undefined,
+ );
+ }
+
+}
+stream_wrapper_register('sx', 'sw') or die('failed');
+
+fstat(fopen('sx://test', 'r'));
+
+$s[] = 1; // Cannot use a scalar value as an array
+
+print_r($s);
+--EXPECTF--
+Notice: Undefined property: sw::$undefined in %s on line %d
+Array
+(
+ [0] => 1
+)
+
Modified: php/php-src/trunk/main/streams/userspace.c
===================================================================
--- php/php-src/trunk/main/streams/userspace.c 2011-02-01 20:59:25 UTC (rev 307933)
+++ php/php-src/trunk/main/streams/userspace.c 2011-02-01 22:55:17 UTC (rev 307934)
@@ -855,6 +855,7 @@
#define STAT_PROP_ENTRY_EX(name, name2) \
if (SUCCESS == zend_hash_find(Z_ARRVAL_P(array), #name, sizeof(#name), (void**)&elem)) { \
+ SEPARATE_ZVAL(elem); \
convert_to_long(*elem); \
ssb->sb.st_##name2 = Z_LVAL_PP(elem); \
}