Merge pull request #118 from wtfuzz/master

cast difference between pointers as unsigned in kore_mem_find()
This commit is contained in:
Joris Vink 2016-05-05 15:28:59 +02:00
commit be28c77c6d
2 changed files with 8 additions and 9 deletions

View File

@ -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);

View File

@ -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);