summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/input/uhid.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/input/uhid.c')
-rw-r--r--sys/dev/usb/input/uhid.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/usb/input/uhid.c b/sys/dev/usb/input/uhid.c
index 1b810e3..4723142 100644
--- a/sys/dev/usb/input/uhid.c
+++ b/sys/dev/usb/input/uhid.c
@@ -566,8 +566,10 @@ uhid_ioctl(struct usb_fifo *fifo, u_long cmd, void *addr,
default:
return (EINVAL);
}
+ if (id != 0)
+ copyin(ugd->ugd_data, &id, 1);
error = uhid_get_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, size);
+ NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
break;
case USB_SET_REPORT:
@@ -592,8 +594,10 @@ uhid_ioctl(struct usb_fifo *fifo, u_long cmd, void *addr,
default:
return (EINVAL);
}
+ if (id != 0)
+ copyin(ugd->ugd_data, &id, 1);
error = uhid_set_report(sc, ugd->ugd_report_type, id,
- NULL, ugd->ugd_data, size);
+ NULL, ugd->ugd_data, imin(ugd->ugd_maxlen, size));
break;
case USB_GET_REPORT_ID:
OpenPOWER on IntegriCloud