From 805bdc60879e0f5ca2054e74b6eeab255de76fbd Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Fri, 24 Aug 2018 05:18:20 -0400 Subject: [PATCH] add an extra sanity check for unallocated metadata --- malloc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/malloc.c b/malloc.c index 3263371..8de5d76 100644 --- a/malloc.c +++ b/malloc.c @@ -276,6 +276,10 @@ static void *get_slab(struct size_class *c, size_t slab_size, struct slab_metada static struct slab_metadata *get_metadata(struct size_class *c, size_t slab_size, void *p) { size_t offset = (char *)p - (char *)c->class_region_start; size_t index = offset / slab_size; + // still caught without this check either as a read access violation or "double free" + if (index >= c->metadata_allocated) { + fatal_error("invalid free within a slab yet to be used"); + } return c->slab_info + index; }