diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c index 690988223c4..358e7020698 100644 --- a/dlls/ntdll/tests/pipe.c +++ b/dlls/ntdll/tests/pipe.c @@ -150,7 +150,7 @@ static void test_create_invalid(void) /* create a pipe with sharing = 0 */ res = pNtCreateNamedPipeFile(&handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr, &iosb, 0, 2 /*FILE_CREATE*/, 0, 1, 0, 0, 0xFFFFFFFF, 500, 500, &timeout); - todo_wine ok(res == STATUS_INVALID_PARAMETER, "NtCreateNamedPipeFile returned %x\n", res); + ok(res == STATUS_INVALID_PARAMETER, "NtCreateNamedPipeFile returned %x\n", res); if (!res) CloseHandle(handle); diff --git a/server/named_pipe.c b/server/named_pipe.c index 0f89f5ba445..66664bbc301 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -940,6 +940,12 @@ DECL_HANDLER(create_named_pipe) struct unicode_str name; struct directory *root = NULL; + if (!req->sharing || (req->sharing & ~(FILE_SHARE_READ | FILE_SHARE_WRITE))) + { + set_error( STATUS_INVALID_PARAMETER ); + return; + } + reply->handle = 0; get_req_unicode_str( &name ); if (req->rootdir && !(root = get_directory_obj( current->process, req->rootdir, 0 )))