]> granicus.if.org Git - php/commitdiff
Fix bug #62922
authorNikita Popov <nikic@php.net>
Sat, 20 Jun 2015 12:38:03 +0000 (14:38 +0200)
committerNikita Popov <nikic@php.net>
Sat, 20 Jun 2015 12:39:55 +0000 (14:39 +0200)
Off by one error...

NEWS
ext/standard/string.c
ext/standard/tests/streams/bug62922.phpt [new file with mode: 0644]
ext/standard/tests/strings/substr.phpt

diff --git a/NEWS b/NEWS
index 778a9c0fe9ffe547c5d64b9f893d1b80f06c152f..c25ce52af26325134344668b5a9d3c2d23db8a10 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -30,7 +30,7 @@ PHP                                                                        NEWS
 
 - mysqlnd:
   . Fixed Bug #69796 (mysqli_stmt::fetch doesn't assign null values to
-    bound variables). (Laruence);
+    bound variables). (Laruence)
 
 - Curl:
   . Fixed bug #69831 (Segmentation fault in curl_getinfo). (im dot denisenko at
@@ -48,6 +48,10 @@ PHP                                                                        NEWS
 - SPL
   . Fixed bug #69845 (ArrayObject with ARRAY_AS_PROPS broken). (Dmitry)
 
+- Standard
+  . Fixed bug #62922 (Truncating entire string should result in string).
+    (Nikita)
+
 11 Jun 2015, PHP 7.0.0 Alpha 1
 
 - Core:
index f08ff65e3969af519451299477ea78e66bde366c..186f68767bce7971baa10be7cb0d0e69da3f701a 100644 (file)
@@ -2406,7 +2406,7 @@ PHP_FUNCTION(substr)
                }
        }
 
-       if (f >= (zend_long)str->len) {
+       if (f > (zend_long)str->len) {
                RETURN_FALSE;
        }
 
diff --git a/ext/standard/tests/streams/bug62922.phpt b/ext/standard/tests/streams/bug62922.phpt
new file mode 100644 (file)
index 0000000..d67343e
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+Bug #62922: Truncating entire string should result in string
+--FILE--
+<?php
+var_dump(substr("", 0));
+var_dump(substr("a", 1));
+var_dump(substr("ab", 2));
+?>
+--EXPECT--
+string(0) ""
+string(0) ""
+string(0) ""
index 5a8db16a54ffa3f03e4de7087ef751e6e3ad2732..f0fc06424b5bef6d8c16d001925a89fc77f7e005 100644 (file)
Binary files a/ext/standard/tests/strings/substr.phpt and b/ext/standard/tests/strings/substr.phpt differ