diff options
author | Scott Bauer <scott.bauer@intel.com> | 2018-04-26 11:51:08 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-09-05 09:16:24 +0200 |
commit | 2f294385874e8e152f357531aa177a19560c8a64 (patch) | |
tree | 952a152a4529ca5c46383654694532cef5268ef7 /drivers/cdrom/cdrom.c | |
parent | 86c0a645ffd20ee8e6063f1e9dfba07d35fded5e (diff) | |
download | linux-stable-2f294385874e8e152f357531aa177a19560c8a64.tar.gz linux-stable-2f294385874e8e152f357531aa177a19560c8a64.tar.bz2 linux-stable-2f294385874e8e152f357531aa177a19560c8a64.zip |
cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status
commit 8f3fafc9c2f0ece10832c25f7ffcb07c97a32ad4 upstream.
Like d88b6d04: "cdrom: information leak in cdrom_ioctl_media_changed()"
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().
Signed-off-by: Scott Bauer <scott.bauer@intel.com>
Signed-off-by: Scott Bauer <sbauer@plzdonthack.me>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/cdrom/cdrom.c')
-rw-r--r-- | drivers/cdrom/cdrom.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 998991a365b8..81fb29741dc1 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -2525,7 +2525,7 @@ static int cdrom_ioctl_drive_status(struct cdrom_device_info *cdi, if (!CDROM_CAN(CDC_SELECT_DISC) || (arg == CDSL_CURRENT || arg == CDSL_NONE)) return cdi->ops->drive_status(cdi, CDSL_CURRENT); - if (((int)arg >= cdi->capacity)) + if (arg >= cdi->capacity) return -EINVAL; return cdrom_slot_status(cdi, arg); } |