summaryrefslogtreecommitdiffstats
path: root/misc-utils
diff options
context:
space:
mode:
authorKarel Zak2019-05-16 14:20:32 +0200
committerKarel Zak2019-05-16 14:22:43 +0200
commitf06d8b69a95ec84b5a50fd705a7588b1fe3c2527 (patch)
tree29f0e4c46dd4bd42f604241a726ce727027ddd1d /misc-utils
parentblkid: improve strcpy() usage [coverity scan] (diff)
downloadkernel-qcow2-util-linux-f06d8b69a95ec84b5a50fd705a7588b1fe3c2527.tar.gz
kernel-qcow2-util-linux-f06d8b69a95ec84b5a50fd705a7588b1fe3c2527.tar.xz
kernel-qcow2-util-linux-f06d8b69a95ec84b5a50fd705a7588b1fe3c2527.zip
cal: make sure months_in_row makes sense [coverity scan]
* avoid divide by zero in mountly() dues to wrong months_in_row * make sure months_in_row is at least 1 Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils')
-rw-r--r--misc-utils/cal.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/misc-utils/cal.c b/misc-utils/cal.c
index c7e8d9511..1d4d24134 100644
--- a/misc-utils/cal.c
+++ b/misc-utils/cal.c
@@ -580,13 +580,19 @@ int main(int argc, char **argv)
ctl.months_in_row = MONTHS_IN_YEAR_ROW; /* default */
if (isatty(STDOUT_FILENO)) {
- int w = get_terminal_width(STDOUT_FILENO);
- int mw = ctl.julian ? DOY_MONTH_WIDTH : DOM_MONTH_WIDTH;
- int extra = ((w / mw) - 1) * ctl.gutter_width;
- int new_n = (w - extra) / mw;
+ int w, mw, extra, new_n;
+
+ w = get_terminal_width(80);
+ mw = ctl.julian ? DOY_MONTH_WIDTH : DOM_MONTH_WIDTH;
+
+ if (w < mw)
+ w = mw;
+
+ extra = ((w / mw) - 1) * ctl.gutter_width;
+ new_n = (w - extra) / mw;
if (new_n < MONTHS_IN_YEAR_ROW)
- ctl.months_in_row = new_n;
+ ctl.months_in_row = new_n > 0 ? new_n : 1;
}
} else if (!ctl.months_in_row)
ctl.months_in_row = 1;