johannes                                 Fri, 02 Jul 2010 19:17:45 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=300951

Log:
Fix bug #52238: Crash when an Exception occured in iterator_to_array

Bug: http://bugs.php.net/52238 (Open) Crash when an Exception occured in 
iterator_to_array
      
Changed paths:
    U   php/php-src/branches/PHP_5_2/NEWS
    U   php/php-src/branches/PHP_5_2/ext/spl/spl_iterators.c
    A   php/php-src/branches/PHP_5_2/ext/spl/tests/bug52238.phpt
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c
    A   php/php-src/branches/PHP_5_3/ext/spl/tests/bug52238.phpt
    U   php/php-src/trunk/ext/spl/spl_iterators.c
    A   php/php-src/trunk/ext/spl/tests/bug52238.phpt

Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS   2010-07-02 19:16:21 UTC (rev 300950)
+++ php/php-src/branches/PHP_5_2/NEWS   2010-07-02 19:17:45 UTC (rev 300951)
@@ -2,6 +2,9 @@
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? Jul 2010, PHP 5.2.14

+- Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).
+  (Johannes)
+
 01 Jul 2010, PHP 5.2.14RC2
 - Fixed a possible interruption array leak in strrchr(). Reported by
   Péter Veres. (CVE-2010-2484) (Felipe)

Modified: php/php-src/branches/PHP_5_2/ext/spl/spl_iterators.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/spl/spl_iterators.c        2010-07-02 
19:16:21 UTC (rev 300950)
+++ php/php-src/branches/PHP_5_2/ext/spl/spl_iterators.c        2010-07-02 
19:17:45 UTC (rev 300951)
@@ -2701,7 +2701,9 @@
        }

 done:
-       iter->funcs->dtor(iter TSRMLS_CC);
+       if (iter) {
+               iter->funcs->dtor(iter TSRMLS_CC);
+       }
        return EG(exception) ? FAILURE : SUCCESS;
 }
 /* }}} */

Added: php/php-src/branches/PHP_5_2/ext/spl/tests/bug52238.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/spl/tests/bug52238.phpt                    
        (rev 0)
+++ php/php-src/branches/PHP_5_2/ext/spl/tests/bug52238.phpt    2010-07-02 
19:17:45 UTC (rev 300951)
@@ -0,0 +1,24 @@
+--TEST--
+Bug #52238 - Crash when an Exception occured in iterator_to_array
+--FILE--
+<?php
+class Foo implements IteratorAggregate
+{
+    public function bar() {
+        throw new Exception;
+    }
+
+    public function getIterator() {
+        return new ArrayIterator($this->bar());
+    }
+}
+var_dump(iterator_to_array(new Foo));
+?>
+--EXPECTF--
+Fatal error: Uncaught exception 'Exception' in %s
+Stack trace:
+#0 %s: Foo->bar()
+#1 [internal function]: Foo->getIterator()
+#2 %s: iterator_to_array(Object(Foo))
+#3 {main}
+  thrown in %s on line %d


Property changes on: php/php-src/branches/PHP_5_2/ext/spl/tests/bug52238.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2010-07-02 19:16:21 UTC (rev 300950)
+++ php/php-src/branches/PHP_5_3/NEWS   2010-07-02 19:17:45 UTC (rev 300951)
@@ -2,6 +2,8 @@
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? Jul 2010, PHP 5.3.3 RC3

+- Fixed bug #52238 (Crash when an Exception occured in iterator_to_array).
+  (Johannes)

 01 Jul 2010, PHP 5.3.3 RC2
 - Fixed SplObjectStorage unserialization problems (CVE-2010-2225). (Stas)

Modified: php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c        2010-07-02 
19:16:21 UTC (rev 300950)
+++ php/php-src/branches/PHP_5_3/ext/spl/spl_iterators.c        2010-07-02 
19:17:45 UTC (rev 300951)
@@ -3035,7 +3035,9 @@
        }

 done:
-       iter->funcs->dtor(iter TSRMLS_CC);
+       if (iter) {
+               iter->funcs->dtor(iter TSRMLS_CC);
+       }
        return EG(exception) ? FAILURE : SUCCESS;
 }
 /* }}} */

Added: php/php-src/branches/PHP_5_3/ext/spl/tests/bug52238.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/spl/tests/bug52238.phpt                    
        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/spl/tests/bug52238.phpt    2010-07-02 
19:17:45 UTC (rev 300951)
@@ -0,0 +1,24 @@
+--TEST--
+Bug #52238 - Crash when an Exception occured in iterator_to_array
+--FILE--
+<?php
+class Foo implements IteratorAggregate
+{
+    public function bar() {
+        throw new Exception;
+    }
+
+    public function getIterator() {
+        return new ArrayIterator($this->bar());
+    }
+}
+var_dump(iterator_to_array(new Foo));
+?>
+--EXPECTF--
+Fatal error: Uncaught exception 'Exception' in %s
+Stack trace:
+#0 %s: Foo->bar()
+#1 [internal function]: Foo->getIterator()
+#2 %s: iterator_to_array(Object(Foo))
+#3 {main}
+  thrown in %s on line %d


Property changes on: php/php-src/branches/PHP_5_3/ext/spl/tests/bug52238.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

Modified: php/php-src/trunk/ext/spl/spl_iterators.c
===================================================================
--- php/php-src/trunk/ext/spl/spl_iterators.c   2010-07-02 19:16:21 UTC (rev 
300950)
+++ php/php-src/trunk/ext/spl/spl_iterators.c   2010-07-02 19:17:45 UTC (rev 
300951)
@@ -3033,7 +3033,9 @@
        }

 done:
-       iter->funcs->dtor(iter TSRMLS_CC);
+       if (iter) {
+               iter->funcs->dtor(iter TSRMLS_CC);
+       }
        return EG(exception) ? FAILURE : SUCCESS;
 }
 /* }}} */

Added: php/php-src/trunk/ext/spl/tests/bug52238.phpt
===================================================================
--- php/php-src/trunk/ext/spl/tests/bug52238.phpt                               
(rev 0)
+++ php/php-src/trunk/ext/spl/tests/bug52238.phpt       2010-07-02 19:17:45 UTC 
(rev 300951)
@@ -0,0 +1,24 @@
+--TEST--
+Bug #52238 - Crash when an Exception occured in iterator_to_array
+--FILE--
+<?php
+class Foo implements IteratorAggregate
+{
+    public function bar() {
+        throw new Exception;
+    }
+
+    public function getIterator() {
+        return new ArrayIterator($this->bar());
+    }
+}
+var_dump(iterator_to_array(new Foo));
+?>
+--EXPECTF--
+Fatal error: Uncaught exception 'Exception' in %s
+Stack trace:
+#0 %s: Foo->bar()
+#1 [internal function]: Foo->getIterator()
+#2 %s: iterator_to_array(Object(Foo))
+#3 {main}
+  thrown in %s on line %d


Property changes on: php/php-src/trunk/ext/spl/tests/bug52238.phpt
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision
Added: svn:eol-style
   + native

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

Reply via email to