diff options
author | Antony Dovgal <tony2001@php.net> | 2006-04-05 11:36:13 +0000 |
---|---|---|
committer | Antony Dovgal <tony2001@php.net> | 2006-04-05 11:36:13 +0000 |
commit | e25a1dccac9cbed2cb8d8860519e2ab49e25d30a (patch) | |
tree | 6b4fb4a001cb00f4ebad9f87e338be7cdcd85f6c | |
parent | f0cf877a81b769aa73f81d9b6c0ebec5f85185c2 (diff) | |
download | php-git-e25a1dccac9cbed2cb8d8860519e2ab49e25d30a.tar.gz |
fix #36944 (strncmp & strncasecmp do not return false on negative string length)
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | Zend/zend_builtin_functions.c | 12 |
2 files changed, 14 insertions, 0 deletions
@@ -14,6 +14,8 @@ PHP NEWS - Fixed debug_zval_dump() to support private and protected members. (Dmitry) - Fixed SoapFault::getMessage(). (Dmitry) - Fixed bug #36957 (serialize() does not handle recursion). (Ilia) +- Fixed bug #36944 (strncmp & strncasecmp do not return false on negative + string length). (Tony) - Fixed bug #36941 (ArrayIterator does not clone itself). (Marcus) - Fixed bug #36898 (__set() leaks in classes extending internal ones). (Tony, Dmitry) diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 07e5bf6ad1..f4a432d028 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -314,6 +314,12 @@ ZEND_FUNCTION(strncmp) convert_to_string_ex(s1); convert_to_string_ex(s2); convert_to_long_ex(s3); + + if (Z_LVAL_PP(s3) < 0) { + zend_error(E_WARNING, "Length must be greater than or equal to 0"); + RETURN_FALSE; + } + RETURN_LONG(zend_binary_zval_strncmp(*s1, *s2, *s3)); } /* }}} */ @@ -347,6 +353,12 @@ ZEND_FUNCTION(strncasecmp) convert_to_string_ex(s1); convert_to_string_ex(s2); convert_to_long_ex(s3); + + if (Z_LVAL_PP(s3) < 0) { + zend_error(E_WARNING, "Length must be greater than or equal to 0"); + RETURN_FALSE; + } + RETURN_LONG(zend_binary_zval_strncasecmp(*s1, *s2, *s3)); } /* }}} */ |