mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: tools: function my_memmem() to lookup binary contents
This function simply looks for a memory block inside another one. Signed-off-by: Baptiste Assmann <bedis9@gmail.com>
This commit is contained in:
parent
126d40691a
commit
bb77c8e26d
@ -519,6 +519,12 @@ int parse_binary(const char *source, char **binstr, int *binstrlen, char **err);
|
||||
/* copies at most <n> characters from <src> and always terminates with '\0' */
|
||||
char *my_strndup(const char *src, int n);
|
||||
|
||||
/*
|
||||
* search needle in haystack
|
||||
* returns the pointer if found, returns NULL otherwise
|
||||
*/
|
||||
const void *my_memmem(const void *, size_t, const void *, size_t);
|
||||
|
||||
/* This function returns the first unused key greater than or equal to <key> in
|
||||
* ID tree <root>. Zero is returned if no place is found.
|
||||
*/
|
||||
|
@ -1415,6 +1415,31 @@ char *my_strndup(const char *src, int n)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* search needle in haystack
|
||||
* returns the pointer if found, returns NULL otherwise
|
||||
*/
|
||||
const void *my_memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen)
|
||||
{
|
||||
const void *c = NULL;
|
||||
unsigned char f;
|
||||
|
||||
if ((haystack == NULL) || (needle == NULL) || (haystacklen < needlelen))
|
||||
return NULL;
|
||||
|
||||
f = *(char *)needle;
|
||||
c = haystack;
|
||||
while ((c = memchr(c, f, haystacklen - (c - haystack))) != NULL) {
|
||||
if ((haystacklen - (c - haystack)) < needlelen)
|
||||
return NULL;
|
||||
|
||||
if (memcmp(c, needle, needlelen) == 0)
|
||||
return c;
|
||||
++c;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* This function returns the first unused key greater than or equal to <key> in
|
||||
* ID tree <root>. Zero is returned if no place is found.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user