[3/6] ntdll: NtWriteFile should fail for overlapped IO on files if offset is negative.

Dmitry Timoshkov dmitry at baikal.ru
Mon Sep 2 04:31:08 CDT 2013


---
 dlls/ntdll/file.c       | 2 +-
 dlls/ntdll/tests/file.c | 3 ---
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 83e286e..4a041e3 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -961,7 +961,7 @@ NTSTATUS WINAPI NtWriteFile(HANDLE hFile, HANDLE hEvent,
 
     if (type == FD_TYPE_FILE)
     {
-        if (!(options & (FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT)) && !offset)
+        if (!(options & (FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT)) && (!offset || offset->QuadPart < 0))
         {
             status = STATUS_INVALID_PARAMETER;
             goto done;
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
index cde299c..c802432 100644
--- a/dlls/ntdll/tests/file.c
+++ b/dlls/ntdll/tests/file.c
@@ -2124,11 +2124,8 @@ todo_wine
     iob.Information = -1;
     offset.QuadPart = (LONGLONG)-2 /* FILE_USE_FILE_POINTER_POSITION */;
     status = pNtWriteFile(hfile, 0, NULL, NULL, &iob, contents, sizeof(contents), &offset, NULL);
-todo_wine
     ok(status == STATUS_INVALID_PARAMETER, "expected STATUS_INVALID_PARAMETER, got %#x\n", status);
-todo_wine
     ok(iob.Status == -1, "expected -1, got %#x\n", iob.Status);
-todo_wine
     ok(iob.Information == -1, "expected -1, got %ld\n", iob.Information);
 
     iob.Status = -1;
-- 
1.8.3.4




More information about the wine-patches mailing list