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 <dev@kresin.me>
This commit is contained in:
Mathias Kresin 2019-01-05 07:40:55 +01:00
parent e428b127e7
commit 0e78af22d9

View File

@ -97,6 +97,7 @@ int read_to_buf(const struct file_info *fdata, char *buf)
{ {
FILE *f; FILE *f;
int ret = EXIT_FAILURE; int ret = EXIT_FAILURE;
size_t read;
f = fopen(fdata->file_name, "r"); f = fopen(fdata->file_name, "r");
if (f == NULL) { if (f == NULL) {
@ -104,9 +105,8 @@ int read_to_buf(const struct file_info *fdata, char *buf)
goto out; goto out;
} }
errno = 0; read = fread(buf, fdata->file_size, 1, f);
fread(buf, fdata->file_size, 1, f); if (ferror(f) || read != 1) {
if (errno != 0) {
ERRS("unable to read from file \"%s\"", fdata->file_name); ERRS("unable to read from file \"%s\"", fdata->file_name);
goto out_close; goto out_close;
} }