[Mesa-dev] [PATCH v4 5/5] intel/tools: make sure the binary file is properly read
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Fri Nov 30 15:47:11 UTC 2018
On 14/11/2018 16:30, asimiklit.work at gmail.com wrote:
> From: Andrii Simiklit <andrii.simiklit at globallogic.com>
>
> 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 <eric.engestrom at intel.com> )
>
> v3: Zero size file check placed before fread with exit()
> ( Eric Engestrom <eric.engestrom at intel.com> )
>
> 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 <eric.engestrom at intel.com> )
>
> Signed-off-by: Andrii Simiklit <andrii.simiklit at globallogic.com>
With the nit below :
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> 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 73a6760fc1..0efbdab706 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)
if (end)
> + fprintf(stderr, "Unable to allocate buffer to read binary file\n");
> + else
> + fprintf(stderr, "Input file is empty\n");
> +
> exit(EXIT_FAILURE);
> }
>
More information about the mesa-dev
mailing list