video: fbdev: kyro: fix a DoS bug by restricting user input
authorZheyu Ma <zheyuma97@gmail.com>
Wed, 14 Jul 2021 04:09:22 +0000 (04:09 +0000)
committerSam Ravnborg <sam@ravnborg.org>
Mon, 19 Jul 2021 18:46:32 +0000 (20:46 +0200)
The user can pass in any value to the driver through the 'ioctl'
interface. The driver dost not check, which may cause DoS bugs.

The following log reveals it:

divide error: 0000 [#1] PREEMPT SMP KASAN PTI
RIP: 0010:SetOverlayViewPort+0x133/0x5f0 drivers/video/fbdev/kyro/STG4000OverlayDevice.c:476
Call Trace:
 kyro_dev_overlay_viewport_set drivers/video/fbdev/kyro/fbdev.c:378 [inline]
 kyrofb_ioctl+0x2eb/0x330 drivers/video/fbdev/kyro/fbdev.c:603
 do_fb_ioctl+0x1f3/0x700 drivers/video/fbdev/core/fbmem.c:1171
 fb_ioctl+0xeb/0x130 drivers/video/fbdev/core/fbmem.c:1185
 vfs_ioctl fs/ioctl.c:48 [inline]
 __do_sys_ioctl fs/ioctl.c:753 [inline]
 __se_sys_ioctl fs/ioctl.c:739 [inline]
 __x64_sys_ioctl+0x19b/0x220 fs/ioctl.c:739
 do_syscall_64+0x32/0x80 arch/x86/entry/common.c:46
 entry_SYSCALL_64_after_hwframe+0x44/0xae

Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/1626235762-2590-1-git-send-email-zheyuma97@gmail.com
drivers/video/fbdev/kyro/fbdev.c

index 8fbde92..4b8c7c1 100644 (file)
@@ -372,6 +372,11 @@ static int kyro_dev_overlay_viewport_set(u32 x, u32 y, u32 ulWidth, u32 ulHeight
                /* probably haven't called CreateOverlay yet */
                return -EINVAL;
 
+       if (ulWidth == 0 || ulWidth == 0xffffffff ||
+           ulHeight == 0 || ulHeight == 0xffffffff ||
+           (x < 2 && ulWidth + 2 == 0))
+               return -EINVAL;
+
        /* Stop Ramdac Output */
        DisableRamdacOutput(deviceInfo.pSTGReg);