GNU/Linux |
RedHat 9.0(Shrike) |
|
![]() |
memmem(3) |
![]() |
memmem − locate a substring
#define
_GNU_SOURCE
#include <string.h>
void *memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
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.
The memmem() function returns a pointer to the beginning of the substring, or NULL if the substring is not found.
This function is a GNU extension.
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 makes it worse,
and returns a pointer to the last byte of
’haystack’. This is fixed in glibc 2.1.
strstr(3)
![]() |
memmem(3) | ![]() |