diff --git a/misc/subr.c b/misc/subr.c index 0ca41c7..c7392c1 100644 --- a/misc/subr.c +++ b/misc/subr.c @@ -13,6 +13,21 @@ #include #include +void * +memfind(const void *sub, size_t sublen, const void *mem, size_t memlen) +{ + size_t i, j; + const uint8_t *s = sub, *m = mem; + for (i = 0; i < memlen - sublen + 1; i++) { + for (j = 0; j < sublen; j++) + if (m[i+j] != s[j]) + break; + if (j == sublen) + return (void *)(m + i); + } + return NULL; +} + void enc_be32(void *buf, uint32_t num) { diff --git a/misc/subr.h b/misc/subr.h index d0bf831..73465b0 100644 --- a/misc/subr.h +++ b/misc/subr.h @@ -9,6 +9,8 @@ #define SHAHEXSIZE 41 +void *memfind(const void *sub, size_t sublen, const void *mem, size_t memlen); + uint32_t dec_be32(const void *buf); uint64_t dec_be64(const void *buf); void enc_be32(void *buf, uint32_t num);