kore

An easy to use, scalable and secure web application framework for writing web APIs in C.
Commits | Files | Refs | README | LICENSE | git clone https://git.kore.io/kore.git

commit be28c77c6d493c74e87d5a1d05d58cb75a2a1585
parent 5533211e805d2f23374989762658770a72433528
Author: Joris Vink <joris@coders.se>
Date:   Thu,  5 May 2016 15:28:59 +0200

Merge pull request #118 from wtfuzz/master

cast difference between pointers as unsigned in kore_mem_find()
Diffstat:
includes/kore.h | 2+-
src/utils.c | 15+++++++--------
2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/includes/kore.h b/includes/kore.h @@ -514,7 +514,7 @@ int kore_snprintf(char *, size_t, int *, const char *, ...); long long kore_strtonum(const char *, int, long long, long long, int *); int kore_base64_encode(u_int8_t *, u_int32_t, char **); int kore_base64_decode(char *, u_int8_t **, u_int32_t *); -void *kore_mem_find(void *, size_t, void *, u_int32_t); +void *kore_mem_find(void *, size_t, void *, size_t); char *kore_text_trim(char *, size_t); char *kore_read_line(FILE *, char *, size_t); diff --git a/src/utils.c b/src/utils.c @@ -482,20 +482,19 @@ kore_base64_decode(char *in, u_int8_t **out, u_int32_t *olen) } void * -kore_mem_find(void *src, size_t slen, void *needle, u_int32_t len) +kore_mem_find(void *src, size_t slen, void *needle, size_t len) { - u_int8_t *p, *end; + size_t pos; - end = (u_int8_t *)src + slen; - for (p = src; p < end; p++) { - if (*p != *(u_int8_t *)needle) + for(pos = 0; pos < slen; pos++) { + if ( *((u_int8_t *)src + pos) != *(u_int8_t *)needle) continue; - if ((end - p) < len) + if ((slen - pos) < len) return (NULL); - if (!memcmp(p, needle, len)) - return (p); + if (!memcmp((u_int8_t *)src + pos, needle, len)) + return ((u_int8_t *)src + pos); } return (NULL);