summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.h
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-06-20 12:18:54 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-06-20 16:21:53 +0200
commite4455c32ed76b74197f1a2647c163d0d470df9fe (patch)
tree57dfaceb9adb0b1749e1d7dcfe97969364b44589 /Zend/zend_operators.h
parenta59e0cfce528669642f8199410b267146a30b714 (diff)
downloadphp-git-e4455c32ed76b74197f1a2647c163d0d470df9fe.tar.gz
Bail out earlier in zend_memnrstr
To avoid decrementing a null pointer lateron. As we need to check for NULL here anayway, we should take the chance to bail out right away.
Diffstat (limited to 'Zend/zend_operators.h')
-rw-r--r--Zend/zend_operators.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h
index b126e96611..c6a55c2b6d 100644
--- a/Zend/zend_operators.h
+++ b/Zend/zend_operators.h
@@ -225,10 +225,12 @@ zend_memnrstr(const char *haystack, const char *needle, size_t needle_len, const
p -= needle_len;
do {
- if ((p = (const char *)zend_memrchr(haystack, *needle, (p - haystack) + 1)) && ne == p[needle_len-1]) {
- if (!memcmp(needle + 1, p + 1, needle_len - 2)) {
- return p;
- }
+ p = (const char *)zend_memrchr(haystack, *needle, (p - haystack) + 1);
+ if (!p) {
+ return NULL;
+ }
+ if (ne == p[needle_len-1] && !memcmp(needle + 1, p + 1, needle_len - 2)) {
+ return p;
}
} while (p-- >= haystack);