]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
scsi: sg: check length passed to SG_NEXT_CMD_LEN
authorpeter chang <dpf@google.com>
Wed, 15 Feb 2017 22:11:54 +0000 (14:11 -0800)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 21 Apr 2017 08:11:23 +0000 (10:11 +0200)
BugLink: http://bugs.launchpad.net/bugs/1681875
commit bf33f87dd04c371ea33feb821b60d63d754e3124 upstream.

The user can control the size of the next command passed along, but the
value passed to the ioctl isn't checked against the usable max command
size.

Signed-off-by: Peter Chang <dpf@google.com>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/scsi/sg.c

index 121de0aaa6adaa1e9a71376893072c1f69ddc228..f753df25ba3492d4da3128a8a98eeaae467860ed 100644 (file)
@@ -998,6 +998,8 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
                result = get_user(val, ip);
                if (result)
                        return result;
+               if (val > SG_MAX_CDB_SIZE)
+                       return -ENOMEM;
                sfp->next_cmd_len = (val > 0) ? val : 0;
                return 0;
        case SG_GET_VERSION_NUM: