From 1261b97d10f60dfc7acc534a065bbe6ceef99f4f Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Thu, 18 May 2000 05:35:38 +0000 Subject: Update. * sysdeps/generic/memmem.c (memmem): Check arguments to avoid possibly searching through the whole memory. Closes PR libc/1730, reported by Greg Hudson . --- sysdeps/generic/memmem.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'sysdeps/generic') diff --git a/sysdeps/generic/memmem.c b/sysdeps/generic/memmem.c index 9e32f517b3..e9b270870a 100644 --- a/sysdeps/generic/memmem.c +++ b/sysdeps/generic/memmem.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,94,96,97,98,2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,6 +38,11 @@ memmem (haystack, haystack_len, needle, needle_len) the beginning of the string. */ return (void *) haystack; + /* Sanity check, otherwise the loop might search through the whole + memory. */ + if (__builtin_expect (haystack_len < needle_len, 0)) + return NULL; + for (begin = (const char *) haystack; begin <= last_possible; ++begin) if (begin[0] == ((const char *) needle)[0] && !memcmp ((const void *) &begin[1], -- cgit 1.4.1