From d9b236971e32a09c918e1b2a1d61e2ade7615ce0 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Mon, 27 Jul 2020 09:56:14 -0700 Subject: [PATCH] Added missing error handler --- microstack/ILibParsers.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/microstack/ILibParsers.c b/microstack/ILibParsers.c index 53c8dd3..07e3885 100644 --- a/microstack/ILibParsers.c +++ b/microstack/ILibParsers.c @@ -8862,14 +8862,22 @@ int ILibReadFileFromDiskEx(char **Target, char *FileName) fseek(SourceFile, 0, SEEK_END); SourceFileLength = (int)ftell(SourceFile); - fseek(SourceFile, 0, SEEK_SET); - if ((buffer = (char*)malloc(SourceFileLength + 1)) == NULL) ILIBCRITICALEXIT(254); - SourceFileLength = (int)fread(buffer, sizeof(char), (size_t)SourceFileLength,SourceFile); - buffer[SourceFileLength] = 0; // To be nice, we allocated one more byte and put a zero at the end. - fclose(SourceFile); + if (SourceFileLength >= 0) + { + fseek(SourceFile, 0, SEEK_SET); + if ((buffer = (char*)malloc(SourceFileLength + 1)) == NULL) ILIBCRITICALEXIT(254); + SourceFileLength = (int)fread(buffer, sizeof(char), (size_t)SourceFileLength, SourceFile); + buffer[SourceFileLength] = 0; // To be nice, we allocated one more byte and put a zero at the end. + fclose(SourceFile); - *Target = buffer; - return SourceFileLength; + *Target = buffer; + return SourceFileLength; + } + else + { + *Target = NULL; + return(0); + } }