From 6ae873b97d3b6be8855b70ae13fb31d95e948fcc Mon Sep 17 00:00:00 2001 From: Andrii Simiklit Date: Wed, 14 Nov 2018 18:30:48 +0200 Subject: [PATCH] intel/tools: make sure the binary file is properly read MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 1. tools/i965_disasm.c:58:4: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result fread(assembly, *end, 1, fp); v2: Fixed incorrect return value check. ( Eric Engestrom ) v3: Zero size file check placed before fread with exit() ( Eric Engestrom ) v4: - Title is changed. - The 'size' variable was moved to top of a function scope. - The assertion was replaced by the proper error handling. - The error message on a caller side was fixed. ( Eric Engestrom ) Signed-off-by: Andrii Simiklit Reviewed-by: Lionel Landwerlin Reviewed-by: Eric Engestrom --- src/intel/tools/i965_disasm.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/intel/tools/i965_disasm.c b/src/intel/tools/i965_disasm.c index 73a6760fc13..79434e6462a 100644 --- a/src/intel/tools/i965_disasm.c +++ b/src/intel/tools/i965_disasm.c @@ -47,17 +47,23 @@ i965_disasm_get_file_size(FILE *fp) static void * i965_disasm_read_binary(FILE *fp, size_t *end) { + size_t size; void *assembly; *end = i965_disasm_get_file_size(fp); + if (!*end) + return NULL; assembly = malloc(*end + 1); if (assembly == NULL) return NULL; - fread(assembly, *end, 1, fp); + size = fread(assembly, *end, 1, fp); fclose(fp); - + if (!size) { + free(assembly); + return NULL; + } return assembly; } @@ -167,7 +173,11 @@ int main(int argc, char *argv[]) assembly = i965_disasm_read_binary(fp, &end); if (!assembly) { - fprintf(stderr, "Unable to allocate buffer to read binary file\n"); + if (end) + fprintf(stderr, "Unable to allocate buffer to read binary file\n"); + else + fprintf(stderr, "Input file is empty\n"); + exit(EXIT_FAILURE); } -- 2.30.2