ifstat, nstat: Check fdopen() return value

Prevent passing NULL FILE pointer to fgets() later.

Fix both tools in a single patch since the code changes are basically
identical.

Signed-off-by: Phil Sutter <phil@nwl.cc>
This commit is contained in:
Phil Sutter 2017-08-24 11:46:31 +02:00 committed by Stephen Hemminger
parent ae4e21c93f
commit 6d02518fdc
2 changed files with 22 additions and 10 deletions

View File

@ -992,12 +992,18 @@ int main(int argc, char *argv[])
&& verify_forging(fd) == 0) {
FILE *sfp = fdopen(fd, "r");
load_raw_table(sfp);
if (hist_db && source_mismatch) {
fprintf(stderr, "ifstat: history is stale, ignoring it.\n");
hist_db = NULL;
if (!sfp) {
fprintf(stderr, "ifstat: fdopen failed: %s\n",
strerror(errno));
close(fd);
} else {
load_raw_table(sfp);
if (hist_db && source_mismatch) {
fprintf(stderr, "ifstat: history is stale, ignoring it.\n");
hist_db = NULL;
}
fclose(sfp);
}
fclose(sfp);
} else {
if (fd >= 0)
close(fd);

View File

@ -706,12 +706,18 @@ int main(int argc, char *argv[])
&& verify_forging(fd) == 0) {
FILE *sfp = fdopen(fd, "r");
load_good_table(sfp);
if (hist_db && source_mismatch) {
fprintf(stderr, "nstat: history is stale, ignoring it.\n");
hist_db = NULL;
if (!sfp) {
fprintf(stderr, "nstat: fdopen failed: %s\n",
strerror(errno));
close(fd);
} else {
load_good_table(sfp);
if (hist_db && source_mismatch) {
fprintf(stderr, "nstat: history is stale, ignoring it.\n");
hist_db = NULL;
}
fclose(sfp);
}
fclose(sfp);
} else {
if (fd >= 0)
close(fd);