From: Daniel Stenberg Date: Tue, 24 Apr 2018 06:03:23 +0000 (+0200) Subject: Curl_memchr: zero length input can't match X-Git-Tag: curl-7_60_0~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a7df35ce2130a99f26c4c8315ce46bf10804280e;p=thirdparty%2Fcurl.git Curl_memchr: zero length input can't match Avoids undefined behavior. Reported-by: Geeknik Labs --- diff --git a/lib/curl_memrchr.c b/lib/curl_memrchr.c index c521497b21..eeb3044a90 100644 --- a/lib/curl_memrchr.c +++ b/lib/curl_memrchr.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -44,17 +44,18 @@ void * Curl_memrchr(const void *s, int c, size_t n) { - const unsigned char *p = s; - const unsigned char *q = s; + if(n > 0) { + const unsigned char *p = s; + const unsigned char *q = s; - p += n - 1; + p += n - 1; - while(p >= q) { - if(*p == (unsigned char)c) - return (void *)p; - p--; + while(p >= q) { + if(*p == (unsigned char)c) + return (void *)p; + p--; + } } - return NULL; }