mirror of
https://github.com/systemd/systemd
synced 2024-10-15 20:45:09 +00:00
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:
parent
68e16e9c72
commit
d09a71356e
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue