From ef9113ce4c32cecd31de972f0a5045664fe1dd49 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 25 Jun 2020 16:37:17 +0200 Subject: Bugfix: bei csv_mem_free() muss neben der Anzahl der Elemente auch deren Größe übergeben werden! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- csv.c | 9 +++++---- csv.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/csv.c b/csv.c index 5c92b32..1ba3aa7 100644 --- a/csv.c +++ b/csv.c @@ -33,13 +33,14 @@ csv_mem_reallocate(void *ptr, size_t n, size_t sz, void *cb_arg) } static void -csv_mem_free(void *ptr, size_t sz, void *cb_arg) +csv_mem_free(void *ptr, size_t n, size_t sz, void *cb_arg) { void explicit_bzero(void *b, size_t len); (void) cb_arg; - explicit_bzero(ptr, sz); + // TODO: Check for overflow! + explicit_bzero(ptr, n * sz); free(ptr); } @@ -133,7 +134,7 @@ csv_string_free(csv_string_t *csv_string, const csv_options_t * const csv_option assert(csv_string != NULL); assert(csv_options != NULL); - csv_options->cb_free(csv_string->str, csv_string->cap, csv_options->cb_memory_arg); + csv_options->cb_free(csv_string->str, csv_string->cap, 1, csv_options->cb_memory_arg); // call *_init() for sane default values; prevent possible double-free csv_string_init(csv_string); @@ -197,7 +198,7 @@ csv_field_free(csv_field_t *csv_field, const csv_options_t * const csv_options) assert(csv_field != NULL); assert(csv_options != NULL); - csv_options->cb_free(csv_field->fields, csv_field->cap, csv_options->cb_memory_arg); + csv_options->cb_free(csv_field->fields, csv_field->cap, sizeof(csv_field->fields[0]), csv_options->cb_memory_arg); csv_field_init(csv_field); } diff --git a/csv.h b/csv.h index 9477703..8396d85 100644 --- a/csv.h +++ b/csv.h @@ -25,7 +25,7 @@ typedef struct { void *(*cb_allocate)(size_t, size_t, void *); void *(*cb_reallocate)(void *, size_t, size_t, void *); - void (*cb_free)(void *, size_t sz, void *); + void (*cb_free)(void *, size_t, size_t sz, void *); void *cb_memory_arg; } csv_options_t; -- cgit v1.3