terminal-util: extra safety checks when parsing $COLUMNS or $LINES (#10314)

Let's make sure the integers we parse out are not larger than USHRT_MAX.
This is a good idea as the kernel's TIOCSWINSZ ioctl for sizing
terminals can't take larger values, and we shouldn't risk an overflow.
This commit is contained in:
Lennart Poettering 2018-10-09 09:49:04 +02:00 committed by Yu Watanabe
parent 68e16e9c72
commit d09a71356e

View file

@ -819,11 +819,11 @@ unsigned columns(void) {
if (e)
(void) safe_atoi(e, &c);
if (c <= 0)
if (c <= 0 || c > USHRT_MAX) {
c = fd_columns(STDOUT_FILENO);
if (c <= 0)
c = 80;
if (c <= 0)
c = 80;
}
cached_columns = c;
return cached_columns;
@ -853,11 +853,11 @@ unsigned lines(void) {
if (e)
(void) safe_atoi(e, &l);
if (l <= 0)
if (l <= 0 || l > USHRT_MAX) {
l = fd_lines(STDOUT_FILENO);
if (l <= 0)
l = 24;
if (l <= 0)
l = 24;
}
cached_lines = l;
return cached_lines;