[3/5] ntdll: NtWriteFile should fail for overlapped IO on files if offset is negative. Resend.
Dmitry Timoshkov
dmitry at baikal.ru
Mon Sep 9 03:08:30 CDT 2013
---
dlls/ntdll/file.c | 2 +-
dlls/ntdll/tests/file.c | 14 --------------
2 files changed, 1 insertion(+), 15 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index fec7df4..fcf148a 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -963,7 +963,7 @@ NTSTATUS WINAPI NtWriteFile(HANDLE hFile, HANDLE hEvent,
{
off_t off;
- 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
--
1.8.3.4
More information about the wine-patches
mailing list