Merge branch 'PHP-8.2' into PHP-8.3

* PHP-8.2:
  Fix GH-15837: Segmentation fault in ext/simplexml/simplexml.c
This commit is contained in:
Niels Dossche 2024-09-11 20:39:30 +02:00
commit bc20b403cf
No known key found for this signature in database
GPG key ID: B8A8AD166DF0E2E5
3 changed files with 40 additions and 1 deletions

6
NEWS
View file

@ -2,7 +2,11 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? ????, PHP 8.3.13
- Opcache:
- SimpleXML:
. Fixed bug GH-15837 (Segmentation fault in ext/simplexml/simplexml.c).
(nielsdos)
- SOAP:
. Fixed bug #73182 (PHP SOAPClient does not support stream context HTTP
headers in array form). (nielsdos)
. Fixed bug #62900 (Wrong namespace on xsd import error message). (nielsdos)

View file

@ -2540,6 +2540,11 @@ static void php_sxe_iterator_current_key(zend_object_iterator *iter, zval *key)
{
php_sxe_iterator *iterator = (php_sxe_iterator *)iter;
zval *curobj = &iterator->sxe->iter.data;
if (Z_ISUNDEF_P(curobj)) {
ZVAL_NULL(key);
return;
}
php_sxe_object *intern = Z_SXEOBJ_P(curobj);
xmlNodePtr curnode = NULL;

View file

@ -0,0 +1,30 @@
--TEST--
GH-15837 (Segmentation fault in ext/simplexml/simplexml.c)
--CREDITS--
YuanchengJiang
--FILE--
<?php
$xml =<<<EOF
<xml>
<fieldset1>
</fieldset1>
<fieldset2>
<options>
</options>
</fieldset2>
</xml>
EOF;
$sxe = new SimpleXMLIterator($xml);
$rit = new RecursiveIteratorIterator($sxe, RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($rit as $child) {
$ancestry = $child->xpath('ancestor-or-self::*');
// Exhaust internal iterator
foreach ($ancestry as $ancestor) {
}
}
var_dump($rit->valid());
var_dump($rit->key());
?>
--EXPECT--
bool(false)
NULL