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);                           
                           \
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to