dsp                                      Wed, 27 Jul 2011 14:17:45 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=313781

Log:
Check if given string is long enough in zend_*_strtod

Changed paths:
    U   php/php-src/branches/PHP_5_4/Zend/zend_strtod.c
    U   php/php-src/trunk/Zend/zend_strtod.c

Modified: php/php-src/branches/PHP_5_4/Zend/zend_strtod.c
===================================================================
--- php/php-src/branches/PHP_5_4/Zend/zend_strtod.c     2011-07-27 14:04:39 UTC 
(rev 313780)
+++ php/php-src/branches/PHP_5_4/Zend/zend_strtod.c     2011-07-27 14:17:45 UTC 
(rev 313781)
@@ -2585,6 +2585,11 @@
        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 @@
        double value = 0;
        int any = 0;

+       if (strlen(str) < 1) {
+               *endptr = str;
+               return 0.0;
+       }
+
        /* skip leading zero */
        s++;

@@ -2646,6 +2656,11 @@
        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;
        }

Modified: php/php-src/trunk/Zend/zend_strtod.c
===================================================================
--- php/php-src/trunk/Zend/zend_strtod.c        2011-07-27 14:04:39 UTC (rev 
313780)
+++ php/php-src/trunk/Zend/zend_strtod.c        2011-07-27 14:17:45 UTC (rev 
313781)
@@ -2585,6 +2585,11 @@
        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 @@
        double value = 0;
        int any = 0;

+       if (strlen(str) < 1) {
+               *endptr = str;
+               return 0.0;
+       }
+
        /* skip leading zero */
        s++;

@@ -2646,6 +2656,11 @@
        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;
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to