From f6079e3c56eabe03565faceaef9de12728d278bf Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 12 Nov 2018 23:00:25 +0100 Subject: Fix #77141: Signedness issue in SOAP when precision=-1 According to php_gcvt(), we assume at most 17 fractional digits for negative precision. --- ext/soap/php_encoding.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/soap/php_encoding.c') diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 1198eaf601..6fc2c19817 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1098,7 +1098,7 @@ static xmlNodePtr to_xml_double(encodeTypePtr type, zval *data, int style, xmlNo ZVAL_DOUBLE(&tmp, zval_get_double(data)); - str = (char *) safe_emalloc(EG(precision), 1, MAX_LENGTH_OF_DOUBLE + 1); + str = (char *) safe_emalloc(EG(precision) >= 0 ? EG(precision) : 17, 1, MAX_LENGTH_OF_DOUBLE + 1); php_gcvt(Z_DVAL(tmp), EG(precision), '.', 'E', str); xmlNodeSetContentLen(ret, BAD_CAST(str), strlen(str)); efree(str); -- cgit v1.2.1