Provided by: manpages-pt-dev_20040726-4_all bug

NAME

       memmem - locate a substring

SYNOPSIS

       #include <string.h>

       void *memmem(const void *haystack, size_t haystacklen,
              const void *needle, size_t needlelen);

DESCRIPTION

       The  memmem()  function finds the start of the first occurrence of the substring needle of
       length needlelen in the memory area haystack of length haystacklen.

RETURN VALUE

       The memmem() function returns a pointer to the beginning of the substring, or NULL if  the
       substring is not found.

CONFORMING TO

       This function is a GNU extension.

BUGS

       This  function  was  broken  in  Linux libraries up to and including libc 5.0.9; there the
       `needle' and `haystack' arguments were interchanged, and a pointer to the end of the first
       occurrence  of  needle  was  returned.   Since  libc 5.0.9 is still widely used, this is a
       dangerous function to use.
       Both old and new libc's have the bug that  if  needle  is  empty  haystack-1  (instead  of
       haystack)  is  returned.   And  glibc (2.0.5) makes it worse, and returns a pointer to the
       last byte of `haystack'.  Hopefully this will be  fixed.  For  the  time  being,  memmem()
       should not be used with an empty `needle'.

SEE ALSO

       strstr(3)