Message ID | 20200729113712.8097-1-yepeilin.cs@gmail.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 25a097f5204675550afb879ee18238ca917cba7a |
Delegated to: | Jiri Kosina |
Headers | show |
Series | [Linux-kernel-mentees,v2,RESEND] usbhid: Fix slab-out-of-bounds write in hiddev_ioctl_usage() | expand |
On Wed, Jul 29, 2020 at 07:37:12AM -0400, Peilin Ye wrote: > `uref->usage_index` is not always being properly checked, causing > hiddev_ioctl_usage() to go out of bounds under some cases. Fix it. > > Reported-by: syzbot+34ee1b45d88571c2fa8b@syzkaller.appspotmail.com > Link: https://syzkaller.appspot.com/bug?id=f2aebe90b8c56806b050a20b36f51ed6acabe802 > Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> > Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com> > --- > Change in v2: > - Add the same check for the `HIDIOCGUSAGE` case. (Suggested by > Dan Carpenter <dan.carpenter@oracle.com>) Why are you resending this? regards, dan carpenter
On Wed, 29 Jul 2020, Peilin Ye wrote: > `uref->usage_index` is not always being properly checked, causing > hiddev_ioctl_usage() to go out of bounds under some cases. Fix it. > > Reported-by: syzbot+34ee1b45d88571c2fa8b@syzkaller.appspotmail.com > Link: https://syzkaller.appspot.com/bug?id=f2aebe90b8c56806b050a20b36f51ed6acabe802 > Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> > Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com> > --- > Change in v2: > - Add the same check for the `HIDIOCGUSAGE` case. (Suggested by > Dan Carpenter <dan.carpenter@oracle.com>) Applied, thanks.
On Mon, Aug 17, 2020 at 12:21:41PM +0200, Jiri Kosina wrote: > On Wed, 29 Jul 2020, Peilin Ye wrote: > > > `uref->usage_index` is not always being properly checked, causing > > hiddev_ioctl_usage() to go out of bounds under some cases. Fix it. > > > > Reported-by: syzbot+34ee1b45d88571c2fa8b@syzkaller.appspotmail.com > > Link: https://syzkaller.appspot.com/bug?id=f2aebe90b8c56806b050a20b36f51ed6acabe802 > > Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> > > Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com> > > --- > > Change in v2: > > - Add the same check for the `HIDIOCGUSAGE` case. (Suggested by > > Dan Carpenter <dan.carpenter@oracle.com>) > > Applied, thanks. Thank you for reviewing the patch! Peilin Ye
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 4140dea693e9..4f97e6c12059 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c @@ -519,12 +519,16 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd, switch (cmd) { case HIDIOCGUSAGE: + if (uref->usage_index >= field->report_count) + goto inval; uref->value = field->value[uref->usage_index]; if (copy_to_user(user_arg, uref, sizeof(*uref))) goto fault; goto goodreturn; case HIDIOCSUSAGE: + if (uref->usage_index >= field->report_count) + goto inval; field->value[uref->usage_index] = uref->value; goto goodreturn;