diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-08 11:41:26 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-04-08 11:41:48 +0200 |
commit | 08a306281622e7795de820ca38ec42274c6e0b44 (patch) | |
tree | e9da732c4000907f067f8c216934f5581a23db32 | |
parent | 0a25b41f6d45b49acc23a863045b585db827d9e5 (diff) | |
parent | d7b5954f2818aff6db29a995f407797a7902f38f (diff) | |
download | php-git-08a306281622e7795de820ca38ec42274c6e0b44.tar.gz |
Merge branch 'PHP-7.2' into PHP-7.3
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | ext/standard/string.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/strings/bug77853.phpt | 20 | ||||
-rw-r--r-- | ext/standard/tests/strings/substr_compare.phpt | 4 |
4 files changed, 24 insertions, 4 deletions
@@ -40,6 +40,8 @@ PHP NEWS reference with itself). (Nikita) . Fixed bug #77844 (Crash due to null pointer in parse_ini_string with INI_SCANNER_TYPED). (Nikita) + . Fixed bug #77853 (Inconsistent substr_compare behaviour with empty + haystack). (Nikita) 04 Apr 2019, PHP 7.3.4 diff --git a/ext/standard/string.c b/ext/standard/string.c index 37e8d8c3e4..7404f38982 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -6226,7 +6226,7 @@ PHP_FUNCTION(substr_compare) offset = (offset < 0) ? 0 : offset; } - if ((size_t)offset >= ZSTR_LEN(s1)) { + if ((size_t)offset > ZSTR_LEN(s1)) { php_error_docref(NULL, E_WARNING, "The start position cannot exceed initial string length"); RETURN_FALSE; } diff --git a/ext/standard/tests/strings/bug77853.phpt b/ext/standard/tests/strings/bug77853.phpt new file mode 100644 index 0000000000..ad4f4c5983 --- /dev/null +++ b/ext/standard/tests/strings/bug77853.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #77853: Inconsistent substr_compare behaviour with empty haystack +--FILE-- +<?php + +var_dump(substr_compare('', '', 0, 0)); +var_dump(substr_compare('', '', 0)); + +var_dump(substr_compare('abc', '', 3, 0)); +var_dump(substr_compare('abc', '', 3)); + +var_dump(substr_compare('abc', "\0", 3)); + +?> +--EXPECT-- +int(0) +int(0) +int(0) +int(0) +int(-1) diff --git a/ext/standard/tests/strings/substr_compare.phpt b/ext/standard/tests/strings/substr_compare.phpt index 1fdf1b144f..f1edf0afdf 100644 --- a/ext/standard/tests/strings/substr_compare.phpt +++ b/ext/standard/tests/strings/substr_compare.phpt @@ -27,9 +27,7 @@ int(0) int(0) bool(true) bool(true) - -Warning: substr_compare(): The start position cannot exceed initial string length in %s on line %d -bool(false) +int(-1) bool(true) int(0) |