From 87682e178c770eb42488648775c5002abb7d0d96 Mon Sep 17 00:00:00 2001 From: Sebastien GODARD Date: Fri, 28 Aug 2015 11:35:57 +0200 Subject: [PATCH] tapestat: Check fscanf() return value Fix defects 107300, 107299 and 107298 found by Coverity scan. Signed-off-by: Shane M. SEYMOUR Signed-off-by: Sebastien GODARD --- tapestat.c | 4 +++- tapestat.h | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tapestat.c b/tapestat.c index e6505d9..4f6e8cf 100644 --- a/tapestat.c +++ b/tapestat.c @@ -394,7 +394,9 @@ void tape_calc_one_stats(struct calc_stats *stats, int i) if (fp == NULL) { duration = 0; } else { - fscanf(fp, "%lf", &temp); + if (fscanf(fp, "%lf", &temp) != 1) { + temp = 0; + } duration = (uint64_t) (temp * 1000); fclose(fp); } diff --git a/tapestat.h b/tapestat.h index 97a507b..120d5c7 100644 --- a/tapestat.h +++ b/tapestat.h @@ -31,14 +31,16 @@ #define SYSFS_CLASS_TAPE_DIR "/sys/class/scsi_tape" #define TAPE_STAT_PATH "/sys/class/scsi_tape/st%i/stats/" -#define TAPE_STAT_FILE_VAL(A, B) \ - snprintf(filename, MAXPATHLEN, A, i); \ - if ((fp = fopen(filename, "r")) != NULL) { \ - fscanf(fp, "%"PRId64, &tape_new_stats[i].B); \ - fclose(fp); \ - } else { \ - tape_new_stats[i].valid = TAPE_STATS_INVALID; \ - continue; \ +#define TAPE_STAT_FILE_VAL(A, B) \ + snprintf(filename, MAXPATHLEN, A, i); \ + if ((fp = fopen(filename, "r")) != NULL) { \ + if (fscanf(fp, "%"PRId64, &tape_new_stats[i].B) != 1) { \ + tape_new_stats[i].valid = TAPE_STATS_INVALID; \ + } \ + fclose(fp); \ + } else { \ + tape_new_stats[i].valid = TAPE_STATS_INVALID; \ + continue; \ } -- 2.40.0