diff options
| author | Wang Zihan <jiyu03@qq.com> | 2026-05-03 03:46:15 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-07-31 15:17:23 +0200 |
| commit | e62745dd1172e475c101de3f11e39bf192d35ae5 (patch) | |
| tree | 985615e161d63d659c6de815ad7ee10e02e20678 | |
| parent | 8200871327d1bd4c08daf248a8693a3093982fa4 (diff) | |
vt: add mode validation in vt_setactivate
The vt_setactivate() function accepts any mode value without validation,
while VT_SETMODE correctly rejects invalid values (only VT_AUTO and
VT_PROCESS are valid).
This allows users to set invalid mode values (e.g., 0xFF) which bypasses
VT_PROCESS signal handling and causes undefined VT switching behavior.
Fix this by adding the same validation as VT_SETMODE.
Signed-off-by: Wang Zihan <jiyu03@qq.com>
Link: https://patch.msgid.link/tencent_6A7DAE2E1288663D23AACBE2950D6E535007@qq.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/tty/vt/vt_ioctl.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/tty/vt/vt_ioctl.c b/drivers/tty/vt/vt_ioctl.c index 28993a3d0acb..b8787283a0fa 100644 --- a/drivers/tty/vt/vt_ioctl.c +++ b/drivers/tty/vt/vt_ioctl.c @@ -596,6 +596,8 @@ static int vt_setactivate(struct vt_setactivate __user *sa) return -EFAULT; if (vsa.console == 0 || vsa.console > MAX_NR_CONSOLES) return -ENXIO; + if (vsa.mode.mode != VT_AUTO && vsa.mode.mode != VT_PROCESS) + return -EINVAL; vsa.console--; vsa.console = array_index_nospec(vsa.console, MAX_NR_CONSOLES); |
