lkml.org 
[lkml]   [2016]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 83/88] HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands
    Date
    From: Scott Bauer <sbauer@plzdonthack.me>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit 93a2001bdfd5376c3dc2158653034c20392d15c5 upstream.

    This patch validates the num_values parameter from userland during the
    HIDIOCGUSAGES and HIDIOCSUSAGES commands. Previously, if the report id was set
    to HID_REPORT_ID_UNKNOWN, we would fail to validate the num_values parameter
    leading to a heap overflow.

    Signed-off-by: Scott Bauer <sbauer@plzdonthack.me>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    drivers/hid/usbhid/hiddev.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
    index 2f1ddca6f2e0..700145b15088 100644
    --- a/drivers/hid/usbhid/hiddev.c
    +++ b/drivers/hid/usbhid/hiddev.c
    @@ -516,13 +516,13 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd,
    goto inval;
    } else if (uref->usage_index >= field->report_count)
    goto inval;
    -
    - else if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) &&
    - (uref_multi->num_values > HID_MAX_MULTI_USAGES ||
    - uref->usage_index + uref_multi->num_values > field->report_count))
    - goto inval;
    }

    + if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) &&
    + (uref_multi->num_values > HID_MAX_MULTI_USAGES ||
    + uref->usage_index + uref_multi->num_values > field->report_count))
    + goto inval;
    +
    switch (cmd) {
    case HIDIOCGUSAGE:
    uref->value = field->value[uref->usage_index];
    --
    2.9.1
    \
     
     \ /
      Last update: 2016-07-14 11:01    [W:4.251 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site