[PATCH 4/4] ntoskrnl.exe: Set the IRP output buffer unless the status has both high bits set.

Zebediah Figura z.figura12 at gmail.com
Tue Aug 6 22:48:44 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/ntoskrnl.exe/ntoskrnl.c       | 2 +-
 dlls/ntoskrnl.exe/tests/ntoskrnl.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 2738d727f0..b8c6cce1e6 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -441,7 +441,7 @@ static NTSTATUS WINAPI dispatch_irp_completion( DEVICE_OBJECT *device, IRP *irp,
         req->handle   = wine_server_obj_handle( irp_handle );
         req->status   = irp->IoStatus.u.Status;
         req->size     = irp->IoStatus.Information;
-        if (irp->IoStatus.u.Status >= 0)
+        if ((irp->IoStatus.u.Status & 0xc0000000) != 0xc0000000)
         {
             if (out_buff) wine_server_add_data( req, out_buff, irp->IoStatus.Information );
         }
diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
index e7a8cc987a..86dce75f29 100644
--- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
@@ -444,7 +444,7 @@ static void test_return_status(void)
             sizeof(status), buffer, sizeof(buffer), &ret_size, NULL);
     ok(!ret, "ioctl succeeded\n");
     ok(GetLastError() == ERROR_MR_MID_NOT_FOUND, "got error %u\n", GetLastError());
-    todo_wine ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer);
+    ok(!strcmp(buffer, "ghidef"), "got buffer %s\n", buffer);
     ok(ret_size == 3, "got size %u\n", ret_size);
 
     strcpy(buffer, "abcdef");
-- 
2.22.0




More information about the wine-devel mailing list