cdrom: fix improper type cast, which can leat to information leak.
authorYoung_X <YangX92@hotmail.com>
Wed, 3 Oct 2018 12:54:29 +0000 (12:54 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 3 Oct 2018 16:20:40 +0000 (10:20 -0600)
There is another cast from unsigned long to int which causes
a bounds check to fail with specially crafted input. The value is
then used as an index in the slot array in cdrom_slot_status().

This issue is similar to CVE-2018-16658 and CVE-2018-10940.

Signed-off-by: Young_X <YangX92@hotmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/cdrom/cdrom.c

index a5d5a96479bfe813449c7527024c52bf0d79c1b8..10802d1fc554c02a696371639a3869f22c06736c 100644 (file)
@@ -2445,7 +2445,7 @@ static int cdrom_ioctl_select_disc(struct cdrom_device_info *cdi,
                return -ENOSYS;
 
        if (arg != CDSL_CURRENT && arg != CDSL_NONE) {
-               if ((int)arg >= cdi->capacity)
+               if (arg >= cdi->capacity)
                        return -EINVAL;
        }