Provided by: manpages-pt-dev_20040726-5_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)

GNU                                             January 13, 1998                                       MEMMEM(3)