• 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
cproxy.c 20.2 KB