diff options
| author | 2026-04-10 12:21:17 +0200 | |
|---|---|---|
| committer | 2026-04-10 12:21:17 +0200 | |
| commit | 9dfcfe8dc22233cb08aa22ba743640d8db92c4e7 (patch) | |
| tree | 12020050e429f5acac7473301838fd3895c9312b | |
| parent | f41b1ea67045e0c09339974d83e389972d84f166 (diff) | |
| download | libplist-9dfcfe8dc22233cb08aa22ba743640d8db92c4e7.tar.gz libplist-9dfcfe8dc22233cb08aa22ba743640d8db92c4e7.tar.bz2 | |
Fix fread() unused return values by actually handling errors
| -rw-r--r-- | test/plist_btest.c | 8 | ||||
| -rw-r--r-- | test/plist_jtest.c | 8 | ||||
| -rw-r--r-- | test/plist_otest.c | 7 | ||||
| -rw-r--r-- | test/plist_test.c | 8 | ||||
| -rw-r--r-- | 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); } |
