From f6a6595c6df8266673decccbd909aecf4cd60cf0 Mon Sep 17 00:00:00 2001 From: spv Date: Fri, 22 Apr 2022 13:33:36 -0400 Subject: wip compile on device --- src/main.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index c3df450..c3e4077 100644 --- a/src/main.c +++ b/src/main.c @@ -11,7 +11,6 @@ #include #include - #include "stage1_primitives.h" #include "stage0_primitives.h" #include "patchfinder.h" @@ -23,6 +22,36 @@ uint32_t DNS4_OFFSET; uint32_t LC_CONF_OFFSET; +// https://opensource.apple.com/source/Libc/Libc-825.26/string/FreeBSD/memmem.c.auto.html +void * +memmem(const void *l, size_t l_len, const void *s, size_t s_len) +{ + register char *cur, *last; + const char *cl = (const char *)l; + const char *cs = (const char *)s; + + /* we need something to compare */ + if (l_len == 0 || s_len == 0) + return NULL; + + /* "s" must be smaller or equal to "l" */ + if (l_len < s_len) + return NULL; + + /* special case where s_len == 1 */ + if (s_len == 1) + return memchr(l, (int)*cs, l_len); + + /* the last position where its possible to find "s" in "l" */ + last = (char *)cl + l_len - s_len; + + for (cur = (char *)cl; cur <= last; cur++) + if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0) + return cur; + + return NULL; +} + char* fuck_memory_leaks = NULL; FILE* fp = NULL; -- cgit v1.2.3