From a80b10f5e6de80c2f0ae520c08eeb27c217716ad Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 2 Mar 2021 15:03:37 -0800 Subject: [PATCH] fix potential leak on exit --- contrib/seekable_format/zstdseek_decompress.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/contrib/seekable_format/zstdseek_decompress.c b/contrib/seekable_format/zstdseek_decompress.c index 9bc7dd21d..749d6cd9f 100644 --- a/contrib/seekable_format/zstdseek_decompress.c +++ b/contrib/seekable_format/zstdseek_decompress.c @@ -195,26 +195,22 @@ size_t ZSTD_seekable_free(ZSTD_seekable* zs) ZSTD_freeDStream(zs->dstream); free(zs->seekTable.entries); free(zs); - return 0; } size_t ZSTD_seekable_copySeekTable(ZSTD_seekable* zs, ZSTD_seekTable** out) { - ZSTD_seekTable* st = malloc(sizeof(ZSTD_seekTable)); - if (!st) { - free(st); - return ERROR(memory_allocation); - } + ZSTD_seekTable* const st = malloc(sizeof(ZSTD_seekTable)); + if (st==NULL) return ERROR(memory_allocation); st->checksumFlag = zs->seekTable.checksumFlag; st->tableLen = zs->seekTable.tableLen; /* Allocate an extra entry at the end to match logic of initial allocation */ size_t entriesSize = sizeof(seekEntry_t) * (zs->seekTable.tableLen + 1); - seekEntry_t* entries = (seekEntry_t*)malloc(entriesSize); - if (!entries) { - free(entries); + seekEntry_t* const entries = (seekEntry_t*)malloc(entriesSize); + if (entries==NULL) { + free(st); return ERROR(memory_allocation); } @@ -230,7 +226,6 @@ size_t ZSTD_seekTable_free(ZSTD_seekTable* st) if (st == NULL) return 0; /* support free on null */ free(st->entries); free(st); - return 0; }