diff options
author | Andrii Simiklit <[email protected]> | 2018-11-14 18:30:48 +0200 |
---|---|---|
committer | Eric Engestrom <[email protected]> | 2018-12-04 16:19:26 +0000 |
commit | 6ae873b97d3b6be8855b70ae13fb31d95e948fcc (patch) | |
tree | 224ef060fe0fffd16e1eabc53072a2a5733e89a0 | |
parent | d7b99ab94728980aa88de78b427d2eca7eb39a27 (diff) |
intel/tools: make sure the binary file is properly read
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 <[email protected]> )
v3: Zero size file check placed before fread with exit()
( Eric Engestrom <[email protected]> )
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 <[email protected]> )
Signed-off-by: Andrii Simiklit <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
-rw-r--r-- | src/intel/tools/i965_disasm.c | 16 |
1 files 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); } |