Commit 9d7207212fb for php.net
commit 9d7207212fba5f650670a6069be8663325eedc5d
Merge: a846c8f4141 f5db09db144
Author: David Carlier <devnexen@gmail.com>
Date: Tue May 19 20:14:22 2026 +0100
Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
ext/soap: Fix integer overflow when decoding SOAP array indexes
diff --cc ext/soap/php_packet_soap.c
index 1019949093f,7dcd56f34cc..295804f98d0
--- a/ext/soap/php_packet_soap.c
+++ b/ext/soap/php_packet_soap.c
@@@ -223,25 -244,19 +245,25 @@@ bool parse_packet_soap(zval *this_ptr,
tmp = get_node(tmp->children,"Text");
if (tmp != NULL && tmp->children != NULL) {
zval zv;
- master_to_zval(&zv, get_conversion(IS_STRING), tmp);
+ master_to_zval_with_doc_cleanup(&zv, get_conversion(IS_STRING), tmp, response);
convert_to_string(&zv)
faultstring = Z_STR(zv);
+
+ /* xml:lang is required by SOAP 1.2, but for BC reasons we allow it to be missing */
+ xmlAttrPtr lang_attr = get_attribute_ex(tmp->properties, "lang", (const char *) XML_XML_NAMESPACE);
+ if (lang_attr != NULL && lang_attr->children != NULL) {
+ const char *lang_str = (const char *) lang_attr->children->content;
+ lang = zend_string_init(lang_str, strlen(lang_str), false);
+ }
}
}
tmp = get_node(fault->children,"Detail");
if (tmp != NULL) {
- master_to_zval(&details, NULL, tmp);
+ master_to_zval_with_doc_cleanup(&details, NULL, tmp, response);
}
}
- add_soap_fault(this_ptr, faultcode, faultstring ? ZSTR_VAL(faultstring) : NULL, faultactor ? ZSTR_VAL(faultactor) : NULL, &details);
+ add_soap_fault(this_ptr, faultcode, faultstring ? ZSTR_VAL(faultstring) : NULL, faultactor ? ZSTR_VAL(faultactor) : NULL, &details, lang);
if (faultstring) {
zend_string_release_ex(faultstring, 0);
}