From: Arnaud Le Blanc Date: Tue, 9 Sep 2008 19:44:25 +0000 (+0000) Subject: MFH: Fixed bug #46031 (Segfault in AppendIterator::next) X-Git-Tag: php-5.2.7RC1~63 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fe30db5faf22cf8164fd2aff135879cd3221c89e;p=php MFH: Fixed bug #46031 (Segfault in AppendIterator::next) --- diff --git a/NEWS b/NEWS index e9e7a0c6ed..baaeab4fbb 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,7 @@ PHP NEWS - Fixed a crash on invalid method in ReflectionParameter constructor. (Christian Seiler) +- Fixed bug #46031 (Segfault in AppendIterator::next). (Arnaud) - Fixed bug #46010 (warnings incorrectly generated for iv in ecb mode). (Felipe) - Fixed bug #45405 (snmp extension memory leak). (Federico Cuello, Rodrigo diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index d84fc2e58c..8a66739056 100755 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -1118,6 +1118,9 @@ static inline void spl_dual_it_rewind(spl_dual_it_object *intern TSRMLS_DC) static inline int spl_dual_it_valid(spl_dual_it_object *intern TSRMLS_DC) { + if (!intern->inner.iterator) { + return FAILURE; + } /* FAILURE / SUCCESS */ return intern->inner.iterator->funcs->valid(intern->inner.iterator TSRMLS_CC); } diff --git a/ext/spl/tests/bug46031.phpt b/ext/spl/tests/bug46031.phpt new file mode 100644 index 0000000000..9261ff0fe6 --- /dev/null +++ b/ext/spl/tests/bug46031.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #46031 (Segfault in AppendIterator::next) +--FILE-- +next()); +?> +--EXPECT-- +NULL