Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
82e6713b
Commit
82e6713b
authored
Jul 10, 2017
by
Jacek Caban
Committed by
Alexandre Julliard
Jul 10, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Don't allow APCs on objects associated with completion port.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
f55a1161
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
5 deletions
+9
-5
file.c
dlls/ntdll/tests/file.c
+0
-2
sock.c
dlls/ws2_32/tests/sock.c
+0
-1
async.c
server/async.c
+9
-2
No files found.
dlls/ntdll/tests/file.c
View file @
82e6713b
...
...
@@ -1045,7 +1045,6 @@ static void test_iocp_fileio(HANDLE h)
/* using APCs on handle with associated completion port is not allowed */
res
=
NtReadFile
(
hPipeSrv
,
NULL
,
apc
,
&
apc_count
,
&
iosb
,
recv_buf
,
sizeof
(
recv_buf
),
NULL
,
NULL
);
todo_wine
ok
(
res
==
STATUS_INVALID_PARAMETER
,
"NtReadFile returned %x
\n
"
,
res
);
}
...
...
@@ -1094,7 +1093,6 @@ static void test_iocp_fileio(HANDLE h)
/* using APCs on handle with associated completion port is not allowed */
res
=
NtReadFile
(
hPipeSrv
,
NULL
,
apc
,
&
apc_count
,
&
iosb
,
recv_buf
,
sizeof
(
recv_buf
),
NULL
,
NULL
);
todo_wine
ok
(
res
==
STATUS_INVALID_PARAMETER
,
"NtReadFile returned %x
\n
"
,
res
);
}
...
...
dlls/ws2_32/tests/sock.c
View file @
82e6713b
...
...
@@ -6824,7 +6824,6 @@ static void test_WSARecv(void)
memset
(
&
ov
,
0
,
sizeof
(
ov
));
completion_called
=
0
;
iret
=
WSARecv
(
dest
,
bufs
,
1
,
NULL
,
&
flags
,
&
ov
,
io_completion
);
todo_wine
ok
(
iret
==
SOCKET_ERROR
&&
GetLastError
()
==
WSAEINVAL
,
"WSARecv failed - %d error %d
\n
"
,
iret
,
GetLastError
());
ok
(
!
completion_called
,
"completion called
\n
"
);
...
...
server/async.c
View file @
82e6713b
...
...
@@ -192,7 +192,7 @@ void free_async_queue( struct async_queue *queue )
LIST_FOR_EACH_ENTRY_SAFE
(
async
,
next
,
&
queue
->
queue
,
struct
async
,
queue_entry
)
{
async
->
completion
=
fd_get_completion
(
async
->
fd
,
&
async
->
comp_key
);
if
(
!
async
->
completion
)
async
->
completion
=
fd_get_completion
(
async
->
fd
,
&
async
->
comp_key
);
async
->
fd
=
NULL
;
async_terminate
(
async
,
STATUS_HANDLES_CLOSED
);
async
->
queue
=
NULL
;
...
...
@@ -236,7 +236,7 @@ struct async *create_async( struct fd *fd, struct thread *thread, const async_da
async
->
signaled
=
0
;
async
->
wait_handle
=
0
;
async
->
direct_result
=
0
;
async
->
completion
=
NULL
;
async
->
completion
=
fd_get_completion
(
fd
,
&
async
->
comp_key
)
;
if
(
iosb
)
async
->
iosb
=
(
struct
iosb
*
)
grab_object
(
iosb
);
else
async
->
iosb
=
NULL
;
...
...
@@ -244,6 +244,13 @@ struct async *create_async( struct fd *fd, struct thread *thread, const async_da
list_add_head
(
&
thread
->
process
->
asyncs
,
&
async
->
process_entry
);
if
(
event
)
reset_event
(
event
);
if
(
async
->
completion
&&
data
->
apc
)
{
release_object
(
async
);
set_error
(
STATUS_INVALID_PARAMETER
);
return
NULL
;
}
return
async
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment