• Kevin Puetz's avatar
    rpcrt4: Add a refcount owned by MIDL_STUB_MESSAGE. · a7be4256
    Kevin Puetz authored
    In cases where this could have been use-after-free, exceptions were
    caught/hidden by RpcTryFinally, but still lead to leaks since
    NdrProxyFreeBuffer wasn't able to call IRPCChannelBuffer::FreeBuffer.
    
    StdProxy_GetChannel() now AddRef() on its return value (used to set
    __proxy_frame::_StubMsg::pRpcChannelBuffer), and NdrProxyFreeBuffer()
    calls the corresponding Release() and clears the now-weak pointer.
    This makes the behavior of these function match the observed test
    results, and fixes the crash/leak when a proxy is released mid-Invoke.
    a7be4256
Name
Last commit
Last update
..
tests Loading commit data...
Makefile.in Loading commit data...
cproxy.c Loading commit data...
cpsf.c Loading commit data...
cpsf.h Loading commit data...
cstub.c Loading commit data...
epm.idl Loading commit data...
epm_towers.h Loading commit data...
ncastatus.h Loading commit data...
ndr_clientserver.c Loading commit data...
ndr_contexthandle.c Loading commit data...
ndr_es.c Loading commit data...
ndr_fullpointer.c Loading commit data...
ndr_marshall.c Loading commit data...
ndr_misc.h Loading commit data...
ndr_ole.c Loading commit data...
ndr_stubless.c Loading commit data...
ndr_stubless.h Loading commit data...
ndr_typelib.c Loading commit data...
ndr_types.idl Loading commit data...
rpc_assoc.c Loading commit data...
rpc_assoc.h Loading commit data...
rpc_async.c Loading commit data...
rpc_binding.c Loading commit data...
rpc_binding.h Loading commit data...
rpc_defs.h Loading commit data...
rpc_epmap.c Loading commit data...
rpc_message.c Loading commit data...
rpc_message.h Loading commit data...
rpc_server.c Loading commit data...
rpc_server.h Loading commit data...
rpc_transport.c Loading commit data...
rpcrt4.spec Loading commit data...
rpcrt4_main.c Loading commit data...
version.rc Loading commit data...