]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gpio: GPIO_GET_CHIPINFO_IOCTL: Fix line offset validation
authorLars-Peter Clausen <lars@metafoo.de>
Tue, 18 Oct 2016 14:53:59 +0000 (16:53 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Nov 2016 15:38:45 +0000 (16:38 +0100)
commit 1f1cc4566bd9dd8d3cf19965a4b6392143618536 upstream.

The current line offset validation is off by one. Depending on the data
stored behind the descs array this can either cause undefined behavior or
disclose arbitrary, potentially sensitive, memory to the issuing userspace
application.

Make sure that offset is within the bounds of the desc array.

Fixes: 521a2ad6f862 ("gpio: add userspace ABI for GPIO line information")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpio/gpiolib.c

index 53ff25ac66d8c49df53c41cdd1efff693ea90751..44d976c238c16a5fb527be8c39fd760a152bf422 100644 (file)
@@ -837,7 +837,7 @@ static long gpio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 
                if (copy_from_user(&lineinfo, ip, sizeof(lineinfo)))
                        return -EFAULT;
-               if (lineinfo.line_offset > gdev->ngpio)
+               if (lineinfo.line_offset >= gdev->ngpio)
                        return -EINVAL;
 
                desc = &gdev->descs[lineinfo.line_offset];