staging: dgnc: off by one in dgnc_mgmt_ioctl()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 10 Mar 2015 07:39:42 +0000 (10:39 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Mar 2015 10:08:58 +0000 (11:08 +0100)
"dgnc_NumBoards" is the number of initialized elements in the
dgnc_Board[] array so the comparison should be ">=" instead of ">" so we
don't read invalid data.  We can remove the special handling of the
empty array now that we've fixed this bug.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgnc/dgnc_mgmt.c

index 5544a8e..b89bd59 100644 (file)
@@ -153,8 +153,7 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                if (copy_from_user(&brd, uarg, sizeof(int)))
                        return -EFAULT;
 
-               if ((brd < 0) || (brd > dgnc_NumBoards) ||
-                   (dgnc_NumBoards == 0))
+               if (brd < 0 || brd >= dgnc_NumBoards)
                        return -ENODEV;
 
                memset(&di, 0, sizeof(di));