|
@@ -989,6 +989,9 @@ static inline int hid_hw_raw_request(struct hid_device *hdev,
|
|
|
unsigned char reportnum, __u8 *buf,
|
|
|
size_t len, unsigned char rtype, int reqtype)
|
|
|
{
|
|
|
+ if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
if (hdev->ll_driver->raw_request)
|
|
|
return hdev->ll_driver->raw_request(hdev, reportnum, buf, len,
|
|
|
rtype, reqtype);
|
|
@@ -1008,6 +1011,9 @@ static inline int hid_hw_raw_request(struct hid_device *hdev,
|
|
|
static inline int hid_hw_output_report(struct hid_device *hdev, __u8 *buf,
|
|
|
size_t len)
|
|
|
{
|
|
|
+ if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
if (hdev->ll_driver->output_report)
|
|
|
return hdev->ll_driver->output_report(hdev, buf, len);
|
|
|
|