From 9dfcfe8dc22233cb08aa22ba743640d8db92c4e7 Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Fri, 10 Apr 2026 12:21:17 +0200 Subject: Fix fread() unused return values by actually handling errors --- test/plist_btest.c | 8 +++++++- test/plist_jtest.c | 8 +++++++- test/plist_otest.c | 7 ++++++- test/plist_test.c | 8 +++++++- tools/plistutil.c | 7 +++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/test/plist_btest.c b/test/plist_btest.c index 0f2c1c8..32ba364 100644 --- a/test/plist_btest.c +++ b/test/plist_btest.c @@ -66,7 +66,13 @@ int main(int argc, char *argv[]) stat(file_in, filestats); size_in = filestats->st_size; plist_bin = (char *) malloc(sizeof(char) * (size_in + 1)); - fread(plist_bin, sizeof(char), size_in, iplist); + if (fread(plist_bin, sizeof(char), size_in, iplist) != (size_t)size_in) { + printf("Failed to read input file\n"); + fclose(iplist); + free(plist_bin); + free(filestats); + return 3; + } fclose(iplist); diff --git a/test/plist_jtest.c b/test/plist_jtest.c index 130e3c7..570886d 100644 --- a/test/plist_jtest.c +++ b/test/plist_jtest.c @@ -66,7 +66,13 @@ int main(int argc, char *argv[]) stat(file_in, filestats); size_in = filestats->st_size; plist_json = (char *) malloc(sizeof(char) * (size_in + 1)); - fread(plist_json, sizeof(char), size_in, iplist); + if (fread(plist_json, sizeof(char), size_in, iplist) != (size_t)size_in) { + printf("Failed to read input file\n"); + fclose(iplist); + free(plist_json); + free(filestats); + return 3; + } fclose(iplist); plist_json[size_in] = 0; diff --git a/test/plist_otest.c b/test/plist_otest.c index 14168f8..b2d1c94 100644 --- a/test/plist_otest.c +++ b/test/plist_otest.c @@ -66,7 +66,12 @@ int main(int argc, char *argv[]) stat(file_in, &filestats); size_in = filestats.st_size; plist_ostep = (char *) malloc(sizeof(char) * (size_in + 1)); - fread(plist_ostep, sizeof(char), size_in, iplist); + if (fread(plist_ostep, sizeof(char), size_in, iplist) != (size_t)size_in) { + printf("Failed to read input file\n"); + fclose(iplist); + free(plist_ostep); + return 3; + } fclose(iplist); plist_ostep[size_in] = 0; diff --git a/test/plist_test.c b/test/plist_test.c index 6e3947a..6e94c57 100644 --- a/test/plist_test.c +++ b/test/plist_test.c @@ -66,7 +66,13 @@ int main(int argc, char *argv[]) stat(file_in, filestats); size_in = filestats->st_size; plist_xml = (char *) malloc(sizeof(char) * (size_in + 1)); - fread(plist_xml, sizeof(char), size_in, iplist); + if (fread(plist_xml, sizeof(char), size_in, iplist) != (size_t)size_in) { + printf("Failed to read input file\n"); + fclose(iplist); + free(plist_xml); + free(filestats); + return 3; + } fclose(iplist); diff --git a/tools/plistutil.c b/tools/plistutil.c index 95ec254..37bb044 100644 --- a/tools/plistutil.c +++ b/tools/plistutil.c @@ -337,6 +337,13 @@ int main(int argc, char *argv[]) return 1; } read_size = fread(plist_entire, sizeof(char), filestats.st_size, iplist); + if (read_size != (size_t)filestats.st_size) { + fprintf(stderr, "ERROR: Could not read from input file '%s'\n", options->in_file); + fclose(iplist); + free(plist_entire); + free(options); + return 1; + } plist_entire[read_size] = '\0'; fclose(iplist); } -- cgit v1.1-32-gdbae