iliaa                                    Fri, 06 Aug 2010 19:11:34 +0000

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

Log:
Use correct order of operations. Second of many fixes for bug #52550

Bug: http://bugs.php.net/52550 (Analyzed) integer undefined behaviors executed 
during "make test"
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/standard/string.c
    U   php/php-src/trunk/ext/standard/string.c

Modified: php/php-src/branches/PHP_5_3/ext/standard/string.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/string.c  2010-08-06 18:20:41 UTC 
(rev 301935)
+++ php/php-src/branches/PHP_5_3/ext/standard/string.c  2010-08-06 19:11:34 UTC 
(rev 301936)
@@ -1873,7 +1873,7 @@
                p = haystack + offset;
                e = haystack + haystack_len - needle_len;
        } else {
-               if (-offset > haystack_len || offset < -INT_MAX) {
+               if (offset < -INT_MAX || -offset > haystack_len) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is 
greater than the length of haystack string");
                        RETURN_FALSE;
                }
@@ -1951,7 +1951,7 @@
                        e = haystack + haystack_len - 1;
                } else {
                        p = haystack;
-                       if (-offset > haystack_len || offset < -INT_MAX) {
+                       if (offset < -INT_MAX || -offset > haystack_len) {
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Offset is greater than the length of haystack string");
                                RETURN_FALSE;
                        }
@@ -1983,7 +1983,7 @@
                p = haystack_dup + offset;
                e = haystack_dup + haystack_len - needle_len;
        } else {
-               if (-offset > haystack_len || offset < -INT_MAX) {
+               if (offset < -INT_MAX || -offset > haystack_len) {
                        efree(needle_dup);
                        efree(haystack_dup);
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is 
greater than the length of haystack string");

Modified: php/php-src/trunk/ext/standard/string.c
===================================================================
--- php/php-src/trunk/ext/standard/string.c     2010-08-06 18:20:41 UTC (rev 
301935)
+++ php/php-src/trunk/ext/standard/string.c     2010-08-06 19:11:34 UTC (rev 
301936)
@@ -1873,7 +1873,7 @@
                p = haystack + offset;
                e = haystack + haystack_len - needle_len;
        } else {
-               if (-offset > haystack_len || offset < -INT_MAX) {
+               if (offset < -INT_MAX || -offset > haystack_len) {
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is 
greater than the length of haystack string");
                        RETURN_FALSE;
                }
@@ -1951,7 +1951,7 @@
                        e = haystack + haystack_len - 1;
                } else {
                        p = haystack;
-                       if (-offset > haystack_len || offset < -INT_MAX) {
+                       if (offset < -INT_MAX || -offset > haystack_len) {
                                php_error_docref(NULL TSRMLS_CC, E_WARNING, 
"Offset is greater than the length of haystack string");
                                RETURN_FALSE;
                        }
@@ -1983,7 +1983,7 @@
                p = haystack_dup + offset;
                e = haystack_dup + haystack_len - needle_len;
        } else {
-               if (-offset > haystack_len || offset < -INT_MAX) {
+               if (offset < -INT_MAX || -offset > haystack_len) {
                        efree(needle_dup);
                        efree(haystack_dup);
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset is 
greater than the length of haystack string");

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

Reply via email to