diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-06-27 15:36:42 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-06-27 16:18:42 -0400 |
commit | e165c9c304800718daa589469349282110e00909 (patch) | |
tree | e76462a054c9a1f465b1e38f192dce45a4b33e9c /src/common/compat.c | |
parent | 9e592d1decf1b16128a716220de68322b51d6315 (diff) | |
download | tor-e165c9c304800718daa589469349282110e00909.tar.gz tor-e165c9c304800718daa589469349282110e00909.zip |
Move various mem* functions to lib/string
Diffstat (limited to 'src/common/compat.c')
-rw-r--r-- | src/common/compat.c | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 367ea26c27..cdc53175d0 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -131,52 +131,6 @@ SecureZeroMemory(PVOID ptr, SIZE_T cnt) #include "lib/net/address.h" #include "lib/sandbox/sandbox.h" -/** Given <b>hlen</b> bytes at <b>haystack</b> and <b>nlen</b> bytes at - * <b>needle</b>, return a pointer to the first occurrence of the needle - * within the haystack, or NULL if there is no such occurrence. - * - * This function is <em>not</em> timing-safe. - * - * Requires that <b>nlen</b> be greater than zero. - */ -const void * -tor_memmem(const void *_haystack, size_t hlen, - const void *_needle, size_t nlen) -{ -#if defined(HAVE_MEMMEM) && (!defined(__GNUC__) || __GNUC__ >= 2) - tor_assert(nlen); - return memmem(_haystack, hlen, _needle, nlen); -#else - /* This isn't as fast as the GLIBC implementation, but it doesn't need to - * be. */ - const char *p, *last_possible_start; - const char *haystack = (const char*)_haystack; - const char *needle = (const char*)_needle; - char first; - tor_assert(nlen); - - if (nlen > hlen) - return NULL; - - p = haystack; - /* Last position at which the needle could start. */ - last_possible_start = haystack + hlen - nlen; - first = *(const char*)needle; - while ((p = memchr(p, first, last_possible_start + 1 - p))) { - if (fast_memeq(p, needle, nlen)) - return p; - if (++p > last_possible_start) { - /* This comparison shouldn't be necessary, since if p was previously - * equal to last_possible_start, the next memchr call would be - * "memchr(p, first, 0)", which will return NULL. But it clarifies the - * logic. */ - return NULL; - } - } - return NULL; -#endif /* defined(HAVE_MEMMEM) && (!defined(__GNUC__) || __GNUC__ >= 2) */ -} - /** Represents a lockfile on which we hold the lock. */ struct tor_lockfile_t { /** Name of the file */ |