Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 51911cc

Browse files
committed
Merge branch 'PHP-8.5'
* PHP-8.5: ext/xml: Use zend_string_safe_realloc() for cdata concatenation.
2 parents 69b9ef2 + c8c48f5 commit 51911cc

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

ext/xml/xml.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -829,16 +829,15 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
829829
zval *myval;
830830
/* check if the current tag already has a value - if yes append to that! */
831831
if ((myval = zend_hash_find(Z_ARRVAL_P(ctag), ZSTR_KNOWN(ZEND_STR_VALUE))) && Z_TYPE_P(myval) == IS_STRING) {
832-
size_t newlen = Z_STRLEN_P(myval) + ZSTR_LEN(decoded_value);
833-
Z_STR_P(myval) = zend_string_extend(Z_STR_P(myval), newlen, 0);
832+
Z_STR_P(myval) = zend_string_safe_realloc(Z_STR_P(myval), 1, Z_STRLEN_P(myval), ZSTR_LEN(decoded_value), false);
834833
strncpy(Z_STRVAL_P(myval) + Z_STRLEN_P(myval) - ZSTR_LEN(decoded_value),
835834
ZSTR_VAL(decoded_value), ZSTR_LEN(decoded_value) + 1);
836-
zend_string_release_ex(decoded_value, 0);
835+
zend_string_release_ex(decoded_value, false);
837836
} else {
838837
if (doprint || (! parser->skipwhite)) {
839838
add_assoc_str(ctag, "value", decoded_value);
840839
} else {
841-
zend_string_release_ex(decoded_value, 0);
840+
zend_string_release_ex(decoded_value, false);
842841
}
843842
}
844843
} else {
@@ -856,11 +855,10 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
856855
if (EXPECTED(Z_TYPE_P(mytype) == IS_STRING) && zend_string_equals_literal(Z_STR_P(mytype), "cdata")) {
857856
SEPARATE_ARRAY(curtag);
858857
if ((myval = zend_hash_find(Z_ARRVAL_P(curtag), ZSTR_KNOWN(ZEND_STR_VALUE)))) {
859-
size_t newlen = Z_STRLEN_P(myval) + ZSTR_LEN(decoded_value);
860-
Z_STR_P(myval) = zend_string_extend(Z_STR_P(myval), newlen, 0);
858+
Z_STR_P(myval) = zend_string_safe_realloc(Z_STR_P(myval), 1, Z_STRLEN_P(myval), ZSTR_LEN(decoded_value), false);
861859
strncpy(Z_STRVAL_P(myval) + Z_STRLEN_P(myval) - ZSTR_LEN(decoded_value),
862860
ZSTR_VAL(decoded_value), ZSTR_LEN(decoded_value) + 1);
863-
zend_string_release_ex(decoded_value, 0);
861+
zend_string_release_ex(decoded_value, false);
864862
return;
865863
}
866864
}
@@ -879,7 +877,7 @@ void xml_characterDataHandler(void *userData, const XML_Char *s, int len)
879877
} else if (parser->level == (XML_MAXLEVEL + 1)) {
880878
php_error_docref(NULL, E_WARNING, "Maximum depth exceeded - Results truncated");
881879
} else {
882-
zend_string_release_ex(decoded_value, 0);
880+
zend_string_release_ex(decoded_value, false);
883881
}
884882
}
885883
}

0 commit comments

Comments
 (0)