aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrii Simiklit <[email protected]>2018-11-14 18:30:48 +0200
committerEric Engestrom <[email protected]>2018-12-04 16:19:26 +0000
commit6ae873b97d3b6be8855b70ae13fb31d95e948fcc (patch)
tree224ef060fe0fffd16e1eabc53072a2a5733e89a0
parentd7b99ab94728980aa88de78b427d2eca7eb39a27 (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.c16
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);
}