From e4455c32ed76b74197f1a2647c163d0d470df9fe Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 20 Jun 2019 12:18:54 +0200 Subject: 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. --- Zend/zend_operators.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'Zend/zend_operators.h') 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); -- cgit v1.2.1