1
0
Fork 0
mirror of synced 2025-03-07 03:53:26 +01:00
wine/dlls/rpcrt4
Kevin Puetz 59f39b325d rpcrt4/tests: Add tests for lifetime of IRpcChannelBuffer.
It's possible for a proxy to be released during the middle of an Invoke.
E.g. a specific case where this happened was a single-shot event sink
which, upon receiving the event it was waiting for, would immediately
call DispEventUnadvise. This removed the proxy pointing to that sink
from the connection point's list of subscribers and released the last
refcount on the proxy itself.

Therefore, all state used to complete an RPC call must be on the stack;
once NdrProxySendReceive pumps STA messages and permits reentrancy,
the proxy cannot be accessed or relied on to own anything.

Add test showing MIDL_STUB_MESSAGE::pRpcChannelBuffer owns a refcount
(to ensure it can read [out] parameters from the channel)
2022-10-11 17:13:00 +02:00
..
tests rpcrt4/tests: Add tests for lifetime of IRpcChannelBuffer. 2022-10-11 17:13:00 +02:00
cproxy.c
cpsf.c
cpsf.h
cstub.c
epm.idl
epm_towers.h
Makefile.in rpcrt4: Remove obsolete -D_RPCRT4_ from Makefile.in. 2022-05-02 11:35:26 +02:00
ncastatus.h
ndr_clientserver.c
ndr_contexthandle.c
ndr_es.c
ndr_fullpointer.c
ndr_marshall.c rpcrt4: Don't cast ptrdiff_t to ULONG in traces, use %I instead. 2022-04-11 10:13:45 +02:00
ndr_misc.h
ndr_ole.c
ndr_stubless.c rpcrt4: Add SEH annotations to NdrClientCall2(). 2022-09-07 21:16:49 +02:00
ndr_stubless.h
ndr_typelib.c
ndr_types.idl
rpc_assoc.c
rpc_assoc.h
rpc_async.c
rpc_binding.c rpcrt4: Implement I_RpcBindingInqLocalClientPID(). 2022-07-18 19:17:44 +02:00
rpc_binding.h rpcrt4: Implement I_RpcBindingInqLocalClientPID(). 2022-07-18 19:17:44 +02:00
rpc_defs.h
rpc_epmap.c
rpc_message.c
rpc_message.h
rpc_server.c rpcrt4: Set the name of internal threads. 2022-09-26 21:49:54 +02:00
rpc_server.h
rpc_transport.c rpcrt4: Set the name of internal threads. 2022-09-26 21:49:54 +02:00
rpcrt4.spec
rpcrt4_main.c
version.rc