Module: wine Branch: master Commit: 9e50cc540ac04a0ef5789c170dc62ee30f35bd4d URL: http://source.winehq.org/git/wine.git/?a=commit;h=9e50cc540ac04a0ef5789c170d...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Fri Sep 13 15:45:37 2013 +0900
ntdll: NtWriteFile should fail for overlapped IO on files if offset is negative.
---
dlls/ntdll/file.c | 2 +- dlls/ntdll/tests/file.c | 14 -------------- 2 files changed, 1 insertions(+), 15 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index f7f80e6..dd67b3d 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 0b2a764..120fdac 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -2198,9 +2198,6 @@ todo_wine
for (i = -20; i < -1; i++) { - /* FIXME: Remove once Wine is fixed */ - if (i == -2) continue; - iob.Status = -1; iob.Information = -1; offset.QuadPart = (LONGLONG)i; @@ -2212,17 +2209,6 @@ todo_wine
iob.Status = -1; 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; - iob.Information = -1; offset.QuadPart = 0; status = pNtWriteFile(hfile, 0, NULL, NULL, &iob, contents, sizeof(contents), &offset, NULL); todo_wine