From: Sebastien GODARD Date: Fri, 28 Aug 2015 09:35:57 +0000 (+0200) Subject: tapestat: Check fscanf() return value X-Git-Tag: v11.1.7~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=87682e178c770eb42488648775c5002abb7d0d96;p=sysstat 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 --- 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; \ }