aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFullway Wang <fullwaywang@outlook.com>2024-01-18 11:49:40 +0800
committerHelge Deller <deller@gmx.de>2024-01-21 09:00:14 +0100
commit04e5eac8f3ab2ff52fa191c187a46d4fdbc1e288 (patch)
tree80af462962b78bade7861a2f84b644370d89d73d
parentfead90507a37e73d41f6059b325b34412ed8d84b (diff)
downloadsysctl-04e5eac8f3ab2ff52fa191c187a46d4fdbc1e288.tar.gz
fbdev: savage: Error out if pixclock equals zero
The userspace program could pass any values to the driver through ioctl() interface. If the driver doesn't check the value of pixclock, it may cause divide-by-zero error. Although pixclock is checked in savagefb_decode_var(), but it is not checked properly in savagefb_probe(). Fix this by checking whether pixclock is zero in the function savagefb_check_var() before info->var.pixclock is used as the divisor. This is similar to CVE-2022-3061 in i740fb which was fixed by commit 15cf0b8. Signed-off-by: Fullway Wang <fullwaywang@outlook.com> Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r--drivers/video/fbdev/savage/savagefb_driver.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c
index dddd6afcb972a5..ebc9aeffdde7c5 100644
--- a/drivers/video/fbdev/savage/savagefb_driver.c
+++ b/drivers/video/fbdev/savage/savagefb_driver.c
@@ -869,6 +869,9 @@ static int savagefb_check_var(struct fb_var_screeninfo *var,
DBG("savagefb_check_var");
+ if (!var->pixclock)
+ return -EINVAL;
+
var->transp.offset = 0;
var->transp.length = 0;
switch (var->bits_per_pixel) {