From a13d78cbd5a7aba4d5ce3f9c81602e6449decd7e Mon Sep 17 00:00:00 2001 From: Katharina Fey Date: Mon, 29 Aug 2016 11:03:04 +0200 Subject: - Fixing an issue where the list malloc was of size 0 - Now properly cleaning payload space after type reset - Minor tweaks and improvements --- lib/dtree.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib/dtree.c') diff --git a/lib/dtree.c b/lib/dtree.c index cb2578d..43213d0 100644 --- a/lib/dtree.c +++ b/lib/dtree.c @@ -49,7 +49,6 @@ dt_err dtree_resettype(dtree *data) dt_err err; for(i = 0; i < data->size; i++) { err = dtree_free(data->payload.list[i]); - memset(data->payload.list[i], 0, sizeof(data->payload.list[i])); if(err) return err; } } @@ -60,6 +59,9 @@ dt_err dtree_resettype(dtree *data) data->size = 0; data->used = 0; + /* Forcibly clean union memory to avoid bleeding data */ + memset(&data->payload, 0, sizeof(data->payload)); + return SUCCESS; } @@ -146,7 +148,7 @@ dt_err dtree_addlist(dtree *data, dtree *(*new_data)) /* This means the data object is new */ } else { - dtree **tmp = (dtree**) malloc(sizeof(dtree*) * data->size); + dtree **tmp = (dtree**) malloc(sizeof(dtree*) * RDB_REC_DEF_SIZE); data->payload.list = tmp; data->type = LIST; data->used = 0; @@ -157,8 +159,7 @@ dt_err dtree_addlist(dtree *data, dtree *(*new_data)) if(err) return err; /* Reference the slot, assign it, then move our ctr */ - data->payload.list[data->used] = *new_data; - data->used++; + data->payload.list[data->used++] = *new_data; return SUCCESS; } -- cgit v1.2.3