From 890400ebd092c574707d0c132124f8ff047e20e1 Mon Sep 17 00:00:00 2001 From: Christian Hoene Date: Sun, 3 Oct 2021 17:48:38 +0200 Subject: [PATCH] Fix for issue 163 --- src/hdf/dataobject.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/hdf/dataobject.c b/src/hdf/dataobject.c index 900d72e..77bbc01 100644 --- a/src/hdf/dataobject.c +++ b/src/hdf/dataobject.c @@ -500,14 +500,17 @@ static int readOHDRHeaderMessageDataLayout(struct READER *reader, store = ftell(reader->fhd); if (fseek(reader->fhd, data_address, SEEK_SET) < 0) return errno; // LCOV_EXCL_LINE - if (!data->data) { - if (data_size > 0x10000000) - return MYSOFA_INVALID_FORMAT; - data->data_len = data_size; - data->data = calloc(1, data_size); - if (!data->data) - return MYSOFA_NO_MEMORY; // LCOV_EXCL_LINE + if (data->data) { + free(data->data); + data->data = NULL; } + if (data_size > 0x10000000) + return MYSOFA_INVALID_FORMAT; + data->data_len = data_size; + data->data = calloc(1, data_size); + if (!data->data) + return MYSOFA_NO_MEMORY; // LCOV_EXCL_LINE + err = fread(data->data, 1, data_size, reader->fhd); if (err != data_size) return MYSOFA_READ_ERROR; // LCOV_EXCL_LINE