From: Niels Provos Date: Sat, 6 Jan 2007 02:25:50 +0000 (+0000) Subject: evbuffer_find fix from Dug Song X-Git-Tag: release-2.0.1-alpha~666 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=de4e25f1d0a27a4d603d1834b090437237323d06;p=libevent evbuffer_find fix from Dug Song svn:r308 --- diff --git a/buffer.c b/buffer.c index 992a2218..fe6c30ef 100644 --- a/buffer.c +++ b/buffer.c @@ -432,12 +432,13 @@ evbuffer_find(struct evbuffer *buffer, const u_char *what, size_t len) u_char *search = buffer->buffer; u_char *p; - while ((p = memchr(search, *what, remain)) != NULL && remain >= len) { + while ((p = memchr(search, *what, remain)) != NULL) { + remain = buffer->off - (size_t)(search - buffer->buffer); + if (remain < len) + break; if (memcmp(p, what, len) == 0) return (p); - search = p + 1; - remain = buffer->off - (size_t)(search - buffer->buffer); } return (NULL);