From 43ea36154fd25d1ee3b990d095199f5bc64180d0 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 13 Mar 2016 21:01:30 +0100 Subject: [PATCH] Added patch to avoid updating iosb.Status after FSCTL_PIPE_LISTEN call. --- ...dd-tests-for-PIPE_NOWAIT-in-message-.patch | 14 +-- ...o-set-PIPE_NOWAIT-on-byte-mode-pipes.patch | 26 +++--- patches/kernel32-Named_Pipe/definition | 1 + ...tests-for-iosb.Status-value-after-pe.patch | 55 ++++++++++++ ...dd-additional-tests-for-overlapped-h.patch | 90 +++++++++++++++++++ ...ate-iosb.Status-after-FSCTL_PIPE_LIS.patch | 62 +++++++++++++ patches/ntdll-FSCTL_PIPE_LISTEN/definition | 1 + patches/patchinstall.sh | 30 ++++++- 8 files changed, 256 insertions(+), 23 deletions(-) create mode 100644 patches/ntdll-FSCTL_PIPE_LISTEN/0001-ntdll-tests-Add-tests-for-iosb.Status-value-after-pe.patch create mode 100644 patches/ntdll-FSCTL_PIPE_LISTEN/0002-kernel32-tests-Add-additional-tests-for-overlapped-h.patch create mode 100644 patches/ntdll-FSCTL_PIPE_LISTEN/0003-ntdll-Do-not-update-iosb.Status-after-FSCTL_PIPE_LIS.patch create mode 100644 patches/ntdll-FSCTL_PIPE_LISTEN/definition diff --git a/patches/kernel32-Named_Pipe/0014-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch b/patches/kernel32-Named_Pipe/0014-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch index 135ff3b5..086de87a 100644 --- a/patches/kernel32-Named_Pipe/0014-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch +++ b/patches/kernel32-Named_Pipe/0014-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch @@ -1,4 +1,4 @@ -From 18c1a541928b5ef39f647e18f37c7cfdeac1483c Mon Sep 17 00:00:00 2001 +From ac80ddfb739fbe5d743c97715431d0f2e038830c Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 11 Aug 2014 04:19:49 +0200 Subject: kernel32/tests: Add tests for PIPE_NOWAIT in message mode. @@ -8,11 +8,11 @@ Subject: kernel32/tests: Add tests for PIPE_NOWAIT in message mode. 1 file changed, 96 insertions(+) diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c -index 76cf018..35755b3 100644 +index 3388833..4d782bd 100644 --- a/dlls/kernel32/tests/pipe.c +++ b/dlls/kernel32/tests/pipe.c -@@ -2561,6 +2561,101 @@ static void test_overlapped(void) - CloseHandle(thread); +@@ -2619,6 +2619,101 @@ static void test_overlapped_error(void) + CloseHandle(event); } +static void test_nowait(void) @@ -113,14 +113,14 @@ index 76cf018..35755b3 100644 static void test_NamedPipeHandleState(void) { HANDLE server, client; -@@ -2984,6 +3079,7 @@ START_TEST(pipe) - test_CloseHandle(); +@@ -3043,6 +3138,7 @@ START_TEST(pipe) test_impersonation(); test_overlapped(); + test_overlapped_error(); + test_nowait(); test_NamedPipeHandleState(); test_readfileex_pending(); } -- -2.6.2 +2.7.1 diff --git a/patches/kernel32-Named_Pipe/0015-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch b/patches/kernel32-Named_Pipe/0015-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch index 890d1be1..5329772b 100644 --- a/patches/kernel32-Named_Pipe/0015-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch +++ b/patches/kernel32-Named_Pipe/0015-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch @@ -1,4 +1,4 @@ -From 813744368ba23f2e06e06029bf93955760f10a7c Mon Sep 17 00:00:00 2001 +From 2a458a2f67321fb801ad6203b21e644123dc90fa Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 11 Aug 2014 05:34:19 +0200 Subject: ntdll: Allow to set PIPE_NOWAIT on byte-mode pipes. @@ -12,11 +12,11 @@ matches the native implementation. 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c -index 35755b3..e464469 100644 +index 4d782bd..3cdbd93 100644 --- a/dlls/kernel32/tests/pipe.c +++ b/dlls/kernel32/tests/pipe.c -@@ -2561,7 +2561,7 @@ static void test_overlapped(void) - CloseHandle(thread); +@@ -2619,7 +2619,7 @@ static void test_overlapped_error(void) + CloseHandle(event); } -static void test_nowait(void) @@ -24,7 +24,7 @@ index 35755b3..e464469 100644 { HANDLE hnp; HANDLE hFile; -@@ -2572,7 +2572,7 @@ static void test_nowait(void) +@@ -2630,7 +2630,7 @@ static void test_nowait(void) DWORD lpmode; hnp = CreateNamedPipeA(PIPENAME, PIPE_ACCESS_DUPLEX, @@ -33,7 +33,7 @@ index 35755b3..e464469 100644 /* nMaxInstances */ 1, /* nOutBufSize */ 1024, /* nInBufSize */ 1024, -@@ -2603,7 +2603,7 @@ static void test_nowait(void) +@@ -2661,7 +2661,7 @@ static void test_nowait(void) ok(readden == 0, "got %d bytes\n", readden); ok(GetLastError() == ERROR_NO_DATA, "GetLastError() returned %08x, expected ERROR_NO_DATA\n", GetLastError()); @@ -42,7 +42,7 @@ index 35755b3..e464469 100644 ok(SetNamedPipeHandleState(hFile, &lpmode, NULL, NULL), "Change mode\n"); /* send message from server to client */ -@@ -2627,8 +2627,18 @@ static void test_nowait(void) +@@ -2685,8 +2685,18 @@ static void test_nowait(void) ok(WriteFile(hFile, obuf, 0, &written, NULL), "WriteFile\n"); ok(written == 0, "write file len\n"); @@ -63,7 +63,7 @@ index 35755b3..e464469 100644 readden = 0xdeadbeef; SetLastError(0xdeadbeef); -@@ -2640,8 +2650,18 @@ static void test_nowait(void) +@@ -2698,8 +2708,18 @@ static void test_nowait(void) ok(WriteFile(hnp, obuf, 0, &written, NULL), "WriteFile\n"); ok(written == 0, "write file len\n"); @@ -84,10 +84,10 @@ index 35755b3..e464469 100644 readden = 0xdeadbeef; SetLastError(0xdeadbeef); -@@ -3079,7 +3099,8 @@ START_TEST(pipe) - test_CloseHandle(); +@@ -3138,7 +3158,8 @@ START_TEST(pipe) test_impersonation(); test_overlapped(); + test_overlapped_error(); - test_nowait(); + test_nowait(PIPE_TYPE_BYTE); + test_nowait(PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE); @@ -95,10 +95,10 @@ index 35755b3..e464469 100644 test_readfileex_pending(); } diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index ad08987..c9be586 100644 +index ac4d69a..06e5e9b 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -570,6 +570,8 @@ static NTSTATUS read_unix_fd(int fd, char *buf, ULONG *total, ULONG length, +@@ -568,6 +568,8 @@ static NTSTATUS read_unix_fd(int fd, char *buf, ULONG *total, ULONG length, if (ret < 0) ERR("dequeue message failed reason: %s\n", strerror(errno)); } } @@ -108,5 +108,5 @@ index ad08987..c9be586 100644 result = read( fd, buf + *total, length - *total ); -- -2.6.2 +2.7.1 diff --git a/patches/kernel32-Named_Pipe/definition b/patches/kernel32-Named_Pipe/definition index 66986454..2a456bc5 100644 --- a/patches/kernel32-Named_Pipe/definition +++ b/patches/kernel32-Named_Pipe/definition @@ -4,4 +4,5 @@ Fixes: Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryIn FIxes: Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe Depends: rpcrt4-Pipe_Transport Depends: server-Desktop_Refcount +Depends: ntdll-FSCTL_PIPE_LISTEN Category: stable diff --git a/patches/ntdll-FSCTL_PIPE_LISTEN/0001-ntdll-tests-Add-tests-for-iosb.Status-value-after-pe.patch b/patches/ntdll-FSCTL_PIPE_LISTEN/0001-ntdll-tests-Add-tests-for-iosb.Status-value-after-pe.patch new file mode 100644 index 00000000..bdd89cd3 --- /dev/null +++ b/patches/ntdll-FSCTL_PIPE_LISTEN/0001-ntdll-tests-Add-tests-for-iosb.Status-value-after-pe.patch @@ -0,0 +1,55 @@ +From 82da5b425ae379825eecd6a3437a2d2e6b88890e Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 13 Mar 2016 20:28:15 +0100 +Subject: ntdll/tests: Add tests for iosb.Status value after pending + FSCTL_PIPE_LISTEN call. + +--- + dlls/ntdll/tests/pipe.c | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c +index 7c30408..5b19ad3 100644 +--- a/dlls/ntdll/tests/pipe.c ++++ b/dlls/ntdll/tests/pipe.c +@@ -277,10 +277,9 @@ static void test_overlapped(void) + ok(!res, "NtCreateNamedPipeFile returned %x\n", res); + + memset(&iosb, 0x55, sizeof(iosb)); +- +-/* try with event and apc */ + res = listen_pipe(hPipe, hEvent, &iosb, TRUE); + ok(res == STATUS_PENDING, "NtFsControlFile returned %x\n", res); ++ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); + + hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); + ok(hClient != INVALID_HANDLE_VALUE, "can't open pipe, GetLastError: %x\n", GetLastError()); +@@ -294,9 +293,24 @@ static void test_overlapped(void) + + ok(ioapc_called, "IOAPC didn't run\n"); + +- CloseHandle(hEvent); + CloseHandle(hPipe); + CloseHandle(hClient); ++ ++ res = create_pipe(&hPipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */); ++ ok(!res, "NtCreateNamedPipeFile returned %x\n", res); ++ ++ hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); ++ ok(hClient != INVALID_HANDLE_VALUE, "can't open pipe, GetLastError: %x\n", GetLastError()); ++ ++ memset(&iosb, 0x55, sizeof(iosb)); ++ res = listen_pipe(hPipe, hEvent, &iosb, TRUE); ++ ok(res == STATUS_PIPE_CONNECTED, "NtFsControlFile returned %x\n", res); ++ todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); ++ ++ CloseHandle(hPipe); ++ CloseHandle(hClient); ++ ++ CloseHandle(hEvent); + } + + static BOOL userapc_called; +-- +2.7.1 + diff --git a/patches/ntdll-FSCTL_PIPE_LISTEN/0002-kernel32-tests-Add-additional-tests-for-overlapped-h.patch b/patches/ntdll-FSCTL_PIPE_LISTEN/0002-kernel32-tests-Add-additional-tests-for-overlapped-h.patch new file mode 100644 index 00000000..d6a9299a --- /dev/null +++ b/patches/ntdll-FSCTL_PIPE_LISTEN/0002-kernel32-tests-Add-additional-tests-for-overlapped-h.patch @@ -0,0 +1,90 @@ +From 8617c09525a481c382abe15d7a6c9386e80f49ae Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sun, 13 Mar 2016 20:38:10 +0100 +Subject: kernel32/tests: Add additional tests for overlapped handling of + CreateNamedPipe. + +--- + dlls/kernel32/tests/pipe.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 59 insertions(+) + +diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c +index 60336f8..77381f2 100644 +--- a/dlls/kernel32/tests/pipe.c ++++ b/dlls/kernel32/tests/pipe.c +@@ -2091,6 +2091,64 @@ static void test_overlapped(void) + CloseHandle(thread); + } + ++static void test_overlapped_error(void) ++{ ++ HANDLE pipe, file, event; ++ DWORD err, numbytes; ++ OVERLAPPED overlapped; ++ BOOL ret; ++ ++ event = CreateEventA(NULL, TRUE, FALSE, NULL); ++ ok(event != NULL, "CreateEventA failed with %u\n", GetLastError()); ++ ++ pipe = CreateNamedPipeA(PIPENAME, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, ++ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, ++ 1, 1024, 1024, NMPWAIT_WAIT_FOREVER, NULL); ++ ok(pipe != INVALID_HANDLE_VALUE, "CreateNamedPipe failed with %u\n", GetLastError()); ++ ++ memset(&overlapped, 0, sizeof(overlapped)); ++ overlapped.hEvent = event; ++ ret = ConnectNamedPipe(pipe, &overlapped); ++ err = GetLastError(); ++ ok(ret == FALSE, "ConnectNamedPipe succeeded\n"); ++ ok(err == ERROR_IO_PENDING, "expected ERROR_IO_PENDING, got %u\n", err); ++ ++ file = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, ++ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); ++ ok(file != INVALID_HANDLE_VALUE, "CreateFile failed with %u\n", GetLastError()); ++ ++ numbytes = 0xdeadbeef; ++ ret = GetOverlappedResult(pipe, &overlapped, &numbytes, TRUE); ++ ok(ret == TRUE, "GetOverlappedResult failed\n"); ++ ok(numbytes == 0, "expected 0, got %u\n", numbytes); ++ ok(overlapped.Internal == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %08lx\n", overlapped.Internal); ++ ++ CloseHandle(file); ++ CloseHandle(pipe); ++ ++ pipe = CreateNamedPipeA(PIPENAME, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, ++ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, ++ 1, 1024, 1024, NMPWAIT_WAIT_FOREVER, NULL); ++ ok(pipe != INVALID_HANDLE_VALUE, "CreateNamedPipe failed with %u\n", GetLastError()); ++ ++ file = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, ++ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); ++ ok(file != INVALID_HANDLE_VALUE, "CreateFile failed with %u\n", GetLastError()); ++ ++ memset(&overlapped, 0, sizeof(overlapped)); ++ overlapped.hEvent = event; ++ ret = ConnectNamedPipe(pipe, &overlapped); ++ err = GetLastError(); ++ ok(ret == FALSE, "ConnectNamedPipe succeeded\n"); ++ ok(err == ERROR_PIPE_CONNECTED, "expected ERROR_PIPE_CONNECTED, got %u\n", err); ++ todo_wine ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal); ++ ++ CloseHandle(file); ++ CloseHandle(pipe); ++ ++ CloseHandle(event); ++} ++ + static void test_NamedPipeHandleState(void) + { + HANDLE server, client; +@@ -2372,6 +2430,7 @@ START_TEST(pipe) + test_CloseHandle(); + test_impersonation(); + test_overlapped(); ++ test_overlapped_error(); + test_NamedPipeHandleState(); + test_readfileex_pending(); + } +-- +2.7.1 + diff --git a/patches/ntdll-FSCTL_PIPE_LISTEN/0003-ntdll-Do-not-update-iosb.Status-after-FSCTL_PIPE_LIS.patch b/patches/ntdll-FSCTL_PIPE_LISTEN/0003-ntdll-Do-not-update-iosb.Status-after-FSCTL_PIPE_LIS.patch new file mode 100644 index 00000000..b758ecd4 --- /dev/null +++ b/patches/ntdll-FSCTL_PIPE_LISTEN/0003-ntdll-Do-not-update-iosb.Status-after-FSCTL_PIPE_LIS.patch @@ -0,0 +1,62 @@ +From 98592ff61773a99e32b58e9da7df0fd221bcb9c0 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 13 Mar 2016 20:42:03 +0100 +Subject: ntdll: Do not update iosb.Status after FSCTL_PIPE_LISTEN call. + +--- + dlls/kernel32/tests/pipe.c | 2 +- + dlls/ntdll/file.c | 2 +- + dlls/ntdll/tests/pipe.c | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c +index 77381f2..a896843 100644 +--- a/dlls/kernel32/tests/pipe.c ++++ b/dlls/kernel32/tests/pipe.c +@@ -2141,7 +2141,7 @@ static void test_overlapped_error(void) + err = GetLastError(); + ok(ret == FALSE, "ConnectNamedPipe succeeded\n"); + ok(err == ERROR_PIPE_CONNECTED, "expected ERROR_PIPE_CONNECTED, got %u\n", err); +- todo_wine ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal); ++ ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal); + + CloseHandle(file); + CloseHandle(pipe); +diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c +index 46fea51..f9e7b3e 100644 +--- a/dlls/ntdll/file.c ++++ b/dlls/ntdll/file.c +@@ -1802,7 +1802,7 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc + default: + status = server_ioctl_file( handle, event, apc, apc_context, io, code, + in_buffer, in_size, out_buffer, out_size ); +- break; ++ return status; + } + + if (status != STATUS_PENDING) io->u.Status = status; +diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c +index 5b19ad3..77c451b 100644 +--- a/dlls/ntdll/tests/pipe.c ++++ b/dlls/ntdll/tests/pipe.c +@@ -305,7 +305,7 @@ static void test_overlapped(void) + memset(&iosb, 0x55, sizeof(iosb)); + res = listen_pipe(hPipe, hEvent, &iosb, TRUE); + ok(res == STATUS_PIPE_CONNECTED, "NtFsControlFile returned %x\n", res); +- todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); ++ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); + + CloseHandle(hPipe); + CloseHandle(hClient); +@@ -388,7 +388,7 @@ static void test_alertable(void) + todo_wine ok(res == STATUS_CANCELLED, "NtFsControlFile returned %x\n", res); + + ok(userapc_called, "user apc didn't run\n"); +- todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); ++ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status); + ok(WaitForSingleObjectEx(hEvent, 0, TRUE) == WAIT_TIMEOUT, "hEvent signaled\n"); + ok(!ioapc_called, "IOAPC ran\n"); + +-- +2.7.1 + diff --git a/patches/ntdll-FSCTL_PIPE_LISTEN/definition b/patches/ntdll-FSCTL_PIPE_LISTEN/definition new file mode 100644 index 00000000..d3e7143e --- /dev/null +++ b/patches/ntdll-FSCTL_PIPE_LISTEN/definition @@ -0,0 +1 @@ +Fixes: Do not update iosb.Status after FSCTL_PIPE_LISTEN call diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 92a60154..149e7f74 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -207,6 +207,7 @@ patch_enable_all () enable_ntdll_DllRedirects="$1" enable_ntdll_EtwRegisterTraceGuids="$1" enable_ntdll_Exception="$1" + enable_ntdll_FSCTL_PIPE_LISTEN="$1" enable_ntdll_FileDispositionInformation="$1" enable_ntdll_FileFsFullSizeInformation="$1" enable_ntdll_FileFsVolumeInformation="$1" @@ -786,6 +787,9 @@ patch_enable () ntdll-Exception) enable_ntdll_Exception="$2" ;; + ntdll-FSCTL_PIPE_LISTEN) + enable_ntdll_FSCTL_PIPE_LISTEN="$2" + ;; ntdll-FileDispositionInformation) enable_ntdll_FileDispositionInformation="$2" ;; @@ -2191,12 +2195,16 @@ if test "$enable_ntdll_ApiSetQueryApiSetPresence" -eq 1; then fi if test "$enable_kernel32_Named_Pipe" -eq 1; then + if test "$enable_ntdll_FSCTL_PIPE_LISTEN" -gt 1; then + abort "Patchset ntdll-FSCTL_PIPE_LISTEN disabled, but kernel32-Named_Pipe depends on that." + fi if test "$enable_rpcrt4_Pipe_Transport" -gt 1; then abort "Patchset rpcrt4-Pipe_Transport disabled, but kernel32-Named_Pipe depends on that." fi if test "$enable_server_Desktop_Refcount" -gt 1; then abort "Patchset server-Desktop_Refcount disabled, but kernel32-Named_Pipe depends on that." fi + enable_ntdll_FSCTL_PIPE_LISTEN=1 enable_rpcrt4_Pipe_Transport=1 enable_server_Desktop_Refcount=1 fi @@ -4103,6 +4111,22 @@ if test "$enable_kernel32_LocaleNameToLCID" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-FSCTL_PIPE_LISTEN +# | +# | Modified files: +# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/file.c, dlls/ntdll/tests/pipe.c +# | +if test "$enable_ntdll_FSCTL_PIPE_LISTEN" -eq 1; then + patch_apply ntdll-FSCTL_PIPE_LISTEN/0001-ntdll-tests-Add-tests-for-iosb.Status-value-after-pe.patch + patch_apply ntdll-FSCTL_PIPE_LISTEN/0002-kernel32-tests-Add-additional-tests-for-overlapped-h.patch + patch_apply ntdll-FSCTL_PIPE_LISTEN/0003-ntdll-Do-not-update-iosb.Status-after-FSCTL_PIPE_LIS.patch + ( + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for iosb.Status value after pending FSCTL_PIPE_LISTEN call.", 1 },'; + echo '+ { "Michael Müller", "kernel32/tests: Add additional tests for overlapped handling of CreateNamedPipe.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Do not update iosb.Status after FSCTL_PIPE_LISTEN call.", 1 },'; + ) >> "$patchlist" +fi + # Patchset rpcrt4-Pipe_Transport # | # | Modified files: @@ -4144,7 +4168,7 @@ fi # Patchset kernel32-Named_Pipe # | # | This patchset has the following (direct or indirect) dependencies: -# | * rpcrt4-Pipe_Transport, server-Desktop_Refcount +# | * ntdll-FSCTL_PIPE_LISTEN, rpcrt4-Pipe_Transport, server-Desktop_Refcount # | # | This patchset fixes the following Wine bugs: # | * [#17195] Support for named pipe message mode (Linux only) @@ -5215,7 +5239,7 @@ fi # Patchset ntdll-WriteWatches # | # | This patchset has the following (direct or indirect) dependencies: -# | * rpcrt4-Pipe_Transport, server-Desktop_Refcount, kernel32-Named_Pipe, ws2_32-WriteWatches +# | * ntdll-FSCTL_PIPE_LISTEN, rpcrt4-Pipe_Transport, server-Desktop_Refcount, kernel32-Named_Pipe, ws2_32-WriteWatches # | # | Modified files: # | * dlls/kernel32/tests/virtual.c, dlls/ntdll/file.c @@ -5812,7 +5836,7 @@ fi # Patchset server-Pipe_ObjectName # | # | This patchset has the following (direct or indirect) dependencies: -# | * rpcrt4-Pipe_Transport, server-Desktop_Refcount, kernel32-Named_Pipe +# | * ntdll-FSCTL_PIPE_LISTEN, rpcrt4-Pipe_Transport, server-Desktop_Refcount, kernel32-Named_Pipe # | # | Modified files: # | * dlls/ntdll/tests/om.c, server/named_pipe.c, server/object.c, server/object.h