]> granicus.if.org Git - php/commitdiff
fix negative zend_long to size_t cast
authorAnatol Belski <ab@php.net>
Mon, 29 Jun 2015 08:27:13 +0000 (10:27 +0200)
committerAnatol Belski <ab@php.net>
Mon, 29 Jun 2015 08:27:42 +0000 (10:27 +0200)
ext/standard/string.c

index 6c5e58e2bb3dd54dbad2eaff9c9dbee9d6145444..101e88b6b322f602072644c1c5b42ad1cd818fd1 100644 (file)
@@ -2484,9 +2484,10 @@ PHP_FUNCTION(substr_replace)
                         * of the string
                         */
                        if (f < 0) {
-                               f = Z_STRLEN_P(str) + f;
-                               if (f < 0) {
+                               if (f < 0 && -f > Z_STRLEN_P(str)) {
                                        f = 0;
+                               } else {
+                                       f = Z_STRLEN_P(str) + f;
                                }
                        } else if (f > Z_STRLEN_P(str)) {
                                f = Z_STRLEN_P(str);