From 19ee637cefbdc197c0d249b146f263116812db53 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Sat, 6 Aug 2022 12:19:45 -0300 Subject: keyword: Fix a major issue with `get_keyword_offset_ptr()` adding the offset before dereferencing `ret`, and also check if the dereferenced return pointer is NULL --- keyword.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/keyword.c b/keyword.c index 385f526..3a87c13 100644 --- a/keyword.c +++ b/keyword.c @@ -13,7 +13,11 @@ void *get_keyword_offset_ptr(const keyword *key, void *ptr) { char *ret = (char *)(ptr+key->offsets[0]); for (int i = 1; (int64_t)key->offsets[i] >= 0; ++i) { - ret = *(char **)(ret+key->offsets[i]); + if (*(char **)ret != NULL) { + ret = (*(char **)ret)+key->offsets[i]; + } else { + return NULL; + } } return (void *)ret; } -- cgit v1.2.3-13-gbd6f