com php-src: Revert "Fix for #73240 - Write out of bounds at number_format": ext/standard/math.c
| From: | Anatol Belski | Date: | Thu, 13 Oct 2016 23:43:23 +0000 |
| Subject: | com php-src: Revert "Fix for #73240 - Write out of bounds at number_format": ext/standard/math.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-95058@lists.php.net to get a copy of this message | ||
Commit: 41ed9d1f9f1f0fd097e8157e42a4689d117e083d
Author: Anatol Belski <ab@php.net> Wed, 12 Oct 2016 16:11:32 +0200
Parents: 7897e8cd6c1d6b201eb384fac38ed41a21420ae3
Branches: PHP-7.1
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=41ed9d1f9f1f0fd097e8157e42a4689d117e083d
Log:
Revert "Fix for #73240 - Write out of bounds at number_format"
This reverts commit 01280f8deb837a61237a619cffa886d7f8c31963.
The fix is already merged by Stas.
(cherry picked from commit 80eb013a926fad18cb0da05c508f564da3c1d88c)
Bugs:
https://bugs.php.net/73240
Changed paths:
M ext/standard/math.c
Diff:
diff --git a/ext/standard/math.c b/ext/standard/math.c
index 753656c...83145a4 100644
--- a/ext/standard/math.c
+++ b/ext/standard/math.c
@@ -1139,14 +1139,18 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char
*dec_poin
/* calculate the length of the return buffer */
if (dp) {
- integral = (dp - ZSTR_VAL(tmpbuf));
+ integral = (int)(dp - ZSTR_VAL(tmpbuf));
} else {
/* no decimal point was found */
- integral = ZSTR_LEN(tmpbuf);
+ integral = (int)ZSTR_LEN(tmpbuf);
}
/* allow for thousand separators */
if (thousand_sep) {
+ if (integral + thousand_sep_len * ((integral-1) / 3) < integral) {
+ /* overflow */
+ php_error_docref(NULL, E_ERROR, "String overflow");
+ }
integral += thousand_sep_len * ((integral-1) / 3);
}
@@ -1156,6 +1160,10 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char
*dec_poin
reslen += dec;
if (dec_point) {
+ if (reslen + dec_point_len < dec_point_len) {
+ /* overflow */
+ php_error_docref(NULL, E_ERROR, "String overflow");
+ }
reslen += dec_point_len;
}
}
@@ -1258,7 +1266,6 @@ PHP_FUNCTION(number_format)
break;
default:
WRONG_PARAM_COUNT;
- break;
}
}
/* }}} */