From e4c2a6d1cdc5c56404414afb1dd0ecc51938a4b3 Mon Sep 17 00:00:00 2001 From: Bernhard Loos Date: Thu, 29 Sep 2011 11:20:42 +0200 Subject: [PATCH] server: It's possible to call NtQueryInformationFile on a pipe if it was opened with access 0. --- dlls/ntdll/tests/pipe.c | 2 +- server/named_pipe.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c index 358e7020698..26c38b0b385 100644 --- a/dlls/ntdll/tests/pipe.c +++ b/dlls/ntdll/tests/pipe.c @@ -160,7 +160,7 @@ static void test_create_invalid(void) ok(!res, "NtCreateNamedPipeFile returned %x\n", res); res = pNtQueryInformationFile(handle, &iosb, &info, sizeof(info), (FILE_INFORMATION_CLASS)24); - todo_wine ok(res == STATUS_ACCESS_DENIED, "NtQueryInformationFile returned %x\n", res); + ok(res == STATUS_ACCESS_DENIED, "NtQueryInformationFile returned %x\n", res); /* test FILE_CREATE creation disposition */ res = pNtCreateNamedPipeFile(&handle2, SYNCHRONIZE, &attr, &iosb, FILE_SHARE_READ | FILE_SHARE_WRITE, 2 /*FILE_CREATE*/, diff --git a/server/named_pipe.c b/server/named_pipe.c index 66664bbc301..750f3bc87db 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -1005,9 +1005,12 @@ DECL_HANDLER(get_named_pipe_info) server = get_pipe_server_obj( current->process, req->handle, FILE_READ_ATTRIBUTES ); if (!server) { + if (get_error() != STATUS_OBJECT_TYPE_MISMATCH) + return; + clear_error(); client = (struct pipe_client *)get_handle_obj( current->process, req->handle, - FILE_READ_ATTRIBUTES, &pipe_client_ops ); + 0, &pipe_client_ops ); if (!client) return; server = client->server; } -- 2.11.4.GIT