Bernhard Loos : server: PIPE_TYPE_BYTE | PIPE_READMODE_MESSAGE is invalid for named pipes.
Alexandre Julliard
julliard at winehq.org
Thu Oct 13 14:10:09 CDT 2011
Module: wine
Branch: master
Commit: c368df486565a83f7f0268a260306b0825e9a0bd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c368df486565a83f7f0268a260306b0825e9a0bd
Author: Bernhard Loos <bernhardloos at 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;
More information about the wine-cvs
mailing list