Rémi Bernon : hidclass.sys: Return STATUS_INVALID_USER_BUFFER if buffer_len is 0.

Alexandre Julliard julliard at winehq.org
Fri Aug 6 16:10:40 CDT 2021


Module: wine
Branch: master
Commit: 25409b899ccbd50743ca1572053a9e975cbb694c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=25409b899ccbd50743ca1572053a9e975cbb694c

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Aug  6 09:49:36 2021 +0200

hidclass.sys: Return STATUS_INVALID_USER_BUFFER if buffer_len is 0.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/hidclass.sys/device.c         | 2 +-
 dlls/ntoskrnl.exe/tests/ntoskrnl.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/dlls/hidclass.sys/device.c b/dlls/hidclass.sys/device.c
index 123feeb6032..e2a2e7c39d4 100644
--- a/dlls/hidclass.sys/device.c
+++ b/dlls/hidclass.sys/device.c
@@ -334,7 +334,7 @@ static void hid_device_xfer_report( BASE_DEVICE_EXTENSION *ext, ULONG code, IRP
         break;
     }
 
-    if (!buffer)
+    if (!buffer || !buffer_len)
     {
         irp->IoStatus.Status = STATUS_INVALID_USER_BUFFER;
         return;
diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
index b2b918001fe..43a87add0f9 100644
--- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
@@ -2582,7 +2582,7 @@ static void test_hidp(HANDLE file, HANDLE async_file, int report_id, BOOL polled
     SetLastError(0xdeadbeef);
     ret = HidD_SetOutputReport(file, report, 0);
     ok(!ret, "HidD_SetOutputReport succeeded\n");
-    todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_SetOutputReport returned error %u\n", GetLastError());
+    ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_SetOutputReport returned error %u\n", GetLastError());
 
     SetLastError(0xdeadbeef);
     ret = HidD_SetOutputReport(file, report, caps.OutputReportByteLength - 1);
@@ -2614,7 +2614,7 @@ static void test_hidp(HANDLE file, HANDLE async_file, int report_id, BOOL polled
     SetLastError(0xdeadbeef);
     ret = sync_ioctl(file, IOCTL_HID_SET_OUTPUT_REPORT, NULL, 0, report, &value);
     ok(!ret, "IOCTL_HID_SET_OUTPUT_REPORT succeeded\n");
-    todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "IOCTL_HID_SET_OUTPUT_REPORT returned error %u\n", GetLastError());
+    ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "IOCTL_HID_SET_OUTPUT_REPORT returned error %u\n", GetLastError());
     value = 0;
     SetLastError(0xdeadbeef);
     ret = sync_ioctl(file, IOCTL_HID_SET_OUTPUT_REPORT, report, caps.OutputReportByteLength * 2, NULL, &value);




More information about the wine-cvs mailing list