From 07d311628f8509e094c140badd6c55e983561f70 Mon Sep 17 00:00:00 2001 From: marcsello Date: Fri, 6 Nov 2020 02:52:19 +0100 Subject: [PATCH] Added SEEK error checking --- src/utils.c | 11 +++++++++-- src/utils.h | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/utils.c b/src/utils.c index dd949d4..b4fa37e 100644 --- a/src/utils.c +++ b/src/utils.c @@ -23,7 +23,11 @@ uint8_t read_file_to_mem(mm_ctx context, const char *filename, uint64_t max_len, return FILE_READ_COULD_NOT_OPEN; } - fseek(fp, 0L, SEEK_END); + if (fseek(fp, 0L, SEEK_END) != 0) { + fclose(fp); + return FILE_SEEK_ERROR; + } + uint64_t fsize = ftell(fp); if (fsize > max_len) { @@ -31,7 +35,10 @@ uint8_t read_file_to_mem(mm_ctx context, const char *filename, uint64_t max_len, return FILE_READ_TOO_BIG; } - fseek(fp, 0L, SEEK_SET); + if (fseek(fp, 0L, SEEK_SET) != 0) { + fclose(fp); + return FILE_SEEK_ERROR; + } uint8_t *contents = (uint8_t *) magic_malloc(context, fsize); diff --git a/src/utils.h b/src/utils.h index 779a99b..a370202 100644 --- a/src/utils.h +++ b/src/utils.h @@ -14,7 +14,8 @@ #define FILE_READ_COULD_NOT_OPEN (FILE_READ_ERROR_PREFIX + 0x01) #define FILE_READ_TOO_BIG (FILE_READ_ERROR_PREFIX + 0x02) #define FILE_READ_COULD_NOT_ALLOCATE (FILE_READ_ERROR_PREFIX + 0x03) -#define FILE_READ_ERROR (FILE_READ_ERROR_PREFIX + 0x04) +#define FILE_SEEK_ERROR (FILE_READ_ERROR_PREFIX + 0x04) +#define FILE_READ_ERROR (FILE_READ_ERROR_PREFIX + 0x05) #define FILE_READ_SUCCESS 0x00