From b90b42b52b7c5538d58b51564f8eae4dbcc8c9b9 Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Sat, 5 Jan 2019 07:40:55 +0100 Subject: [PATCH] firmware-utils: mkdlinkfw: fix error handling fread() doesn't set errno, ferror need to be used to check for errors. While at it, check if we read the expect number of elements. Signed-off-by: Mathias Kresin --- src/mkdlinkfw-lib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mkdlinkfw-lib.c b/src/mkdlinkfw-lib.c index 3b71fda..b3f3f41 100644 --- a/src/mkdlinkfw-lib.c +++ b/src/mkdlinkfw-lib.c @@ -97,6 +97,7 @@ int read_to_buf(const struct file_info *fdata, char *buf) { FILE *f; int ret = EXIT_FAILURE; + size_t read; f = fopen(fdata->file_name, "r"); if (f == NULL) { @@ -104,9 +105,8 @@ int read_to_buf(const struct file_info *fdata, char *buf) goto out; } - errno = 0; - fread(buf, fdata->file_size, 1, f); - if (errno != 0) { + read = fread(buf, fdata->file_size, 1, f); + if (ferror(f) || read != 1) { ERRS("unable to read from file \"%s\"", fdata->file_name); goto out_close; } -- 2.30.2