Module: wine Branch: master Commit: c368df486565a83f7f0268a260306b0825e9a0bd URL: http://source.winehq.org/git/wine.git/?a=commit;h=c368df486565a83f7f0268a260...
Author: Bernhard Loos bernhardloos@googlemail.com Date: Wed Oct 12 14:50:40 2011 +0200
server: PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE is invalid for named pipes.
---
dlls/kernel32/tests/pipe.c | 13 +++++++++++++ server/named_pipe.c | 3 ++- 2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c index ab85ad5..3484c62 100644 --- a/dlls/kernel32/tests/pipe.c +++ b/dlls/kernel32/tests/pipe.c @@ -71,6 +71,19 @@ static void test_CreateNamedPipe(int pipemode) ok(hnp == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_NAME, "CreateNamedPipe should fail if name doesn't start with \\.\pipe\n");
+ if (pipemode == PIPE_TYPE_BYTE) + { + /* Bad parameter checks */ + hnp = CreateNamedPipe(PIPENAME, PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE, + /* nMaxInstances */ 1, + /* nOutBufSize */ 1024, + /* nInBufSize */ 1024, + /* nDefaultWait */ NMPWAIT_USE_DEFAULT_WAIT, + /* lpSecurityAttrib */ NULL); + ok(hnp == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_PARAMETER, + "CreateNamedPipe should fail with PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE\n"); + } + hnp = CreateNamedPipe(NULL, PIPE_ACCESS_DUPLEX, pipemode | PIPE_WAIT, 1, 1024, 1024, NMPWAIT_USE_DEFAULT_WAIT, NULL); diff --git a/server/named_pipe.c b/server/named_pipe.c index d720b17..590adca 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -950,7 +950,8 @@ DECL_HANDLER(create_named_pipe) struct unicode_str name; struct directory *root = NULL;
- if (!req->sharing || (req->sharing & ~(FILE_SHARE_READ | FILE_SHARE_WRITE))) + if (!req->sharing || (req->sharing & ~(FILE_SHARE_READ | FILE_SHARE_WRITE)) || + (!(req->flags & NAMED_PIPE_MESSAGE_STREAM_WRITE) && (req->flags & NAMED_PIPE_MESSAGE_STREAM_READ))) { set_error( STATUS_INVALID_PARAMETER ); return;