From b492bd3942966e7ba32f3b14e5c95bd0c246c1a3 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 25 Jun 2020 16:59:03 +0200 Subject: Prüfe auf Integer-Überlauf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- csv.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'csv.c') diff --git a/csv.c b/csv.c index 1ba3aa7..f154c12 100644 --- a/csv.c +++ b/csv.c @@ -25,22 +25,28 @@ csv_mem_allocate(size_t n, size_t sz, void *cb_arg) static void * csv_mem_reallocate(void *ptr, size_t n, size_t sz, void *cb_arg) { - void *reallocarray(void *ptr, size_t nmemb, size_t size); + size_t len; (void) cb_arg; - return reallocarray(ptr, n, sz); + if ( !__builtin_mul_overflow(n, sz, &len) ) { + return realloc(ptr, len); + } + return NULL; } static void csv_mem_free(void *ptr, size_t n, size_t sz, void *cb_arg) { + size_t len; + void explicit_bzero(void *b, size_t len); (void) cb_arg; - // TODO: Check for overflow! - explicit_bzero(ptr, n * sz); + if ( !__builtin_mul_overflow(n, sz, &len) ) { + explicit_bzero(ptr, len); + } free(ptr); } -- cgit v1.3