strnstr: needle cannot be NULL
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 12 Oct 2015 20:31:53 +0000 (23:31 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 26 Oct 2015 17:36:14 +0000 (19:36 +0200)
compat/strnstr.c

index 3e1f6d5..abdc3ea 100644 (file)
 #endif
 
 #include <string.h>
+#include <assert.h>
 
 char * strnstr (const char *haystack, const char *needle, size_t len)
 {
-    if(!needle || !*needle)
-        return (char*)haystack;
+    assert(needle != NULL);
 
     const size_t i = strlen(needle);
+    if (i == 0) /* corner case (if haystack is NULL, memcmp not allowed) */
+        return (char *)haystack;
+
     if( len < i )
       return NULL;