summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.h
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-12-20 19:08:23 +0000
committerAntony Dovgal <tony2001@php.net>2006-12-20 19:08:23 +0000
commitfa2889fbb12b98b93a5f555d78c6f35d24fe9e45 (patch)
treeaec67bcd304698c28d856cf69e5ffe48f3db398d /Zend/zend_operators.h
parent4d90ff003c26fdeb97937a35bc694c9b538b91e5 (diff)
downloadphp-git-fa2889fbb12b98b93a5f555d78c6f35d24fe9e45.tar.gz
return NULL right away if invalid length was passed
Diffstat (limited to 'Zend/zend_operators.h')
-rw-r--r--Zend/zend_operators.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index a19e8f2892..626dbf010b 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -235,9 +235,13 @@ zend_memnstr(char *haystack, char *needle, int needle_len, char *end)
static inline void *zend_memrchr(const void *s, int c, size_t n)
{
- register unsigned char *e = (unsigned char *)s + n;
+ register unsigned char *e;
- for (e--; e >= (unsigned char *)s; e--) {
+ if (n <= 0) {
+ return NULL;
+ }
+
+ for (e = (unsigned char *)s + n - 1; e >= (unsigned char *)s; e--) {
if (*e == (unsigned char)c) {
return (void *)e;
}