diff options
| author | David Soria Parra <dsp@php.net> | 2011-07-27 14:17:45 +0000 |
|---|---|---|
| committer | David Soria Parra <dsp@php.net> | 2011-07-27 14:17:45 +0000 |
| commit | 0beb0e7056302449aa3423327f5bec7ccd47b3be (patch) | |
| tree | 5733c9c28e015fd2f85dee48621368c34e039db7 /Zend/zend_strtod.c | |
| parent | dd06894b56f3842c9709457b75a4e8a2e707f7fa (diff) | |
| download | php-git-0beb0e7056302449aa3423327f5bec7ccd47b3be.tar.gz | |
Check if given string is long enough in zend_*_strtod
Diffstat (limited to 'Zend/zend_strtod.c')
| -rw-r--r-- | Zend/zend_strtod.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Zend/zend_strtod.c b/Zend/zend_strtod.c index 3f41f85a28..c43587eef3 100644 --- a/Zend/zend_strtod.c +++ b/Zend/zend_strtod.c @@ -2585,6 +2585,11 @@ ZEND_API double zend_hex_strtod(const char *str, const char **endptr) int any = 0; double value = 0; + if (strlen(str) < 2) { + *endptr = str; + return 0.0; + } + if (*s == '0' && (s[1] == 'x' || s[1] == 'X')) { s += 2; } @@ -2618,6 +2623,11 @@ ZEND_API double zend_oct_strtod(const char *str, const char **endptr) double value = 0; int any = 0; + if (strlen(str) < 1) { + *endptr = str; + return 0.0; + } + /* skip leading zero */ s++; @@ -2646,6 +2656,11 @@ ZEND_API double zend_bin_strtod(const char *str, const char **endptr) double value = 0; int any = 0; + if (strlen(str) < 2) { + *endptr = str; + return 0.0; + } + if ('0' == *s && ('b' == s[1] || 'B' == s[1])) { s += 2; } |
