Hi Marcus, On 09/29/12 11:44, Marcus Meissner wrote: > Hi, > > Various coverity issues complain about user-after-free scenarios, > all involving this code path. > > I strongly think if call_ret signals error, we also need to return > an error condition to avoid the callers from proceeding as if nothing > happened.
Agreed, thanks for catching it. > Ciao, Marcus > --- > dlls/rpcrt4/rpc_transport.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c > index 686ce68..e572b78 100644 > --- a/dlls/rpcrt4/rpc_transport.c > +++ b/dlls/rpcrt4/rpc_transport.c > @@ -1882,7 +1882,7 @@ static RPC_STATUS wait_async_request(RpcHttpAsyncData > *async_data, BOOL call_ret > > if(call_ret) { > RpcHttpAsyncData_Release(async_data); > - return RPC_S_OK; > + return call_ret; /* The Http* status codes map into the RPC_S > namespace */ Not really, Http* APIs return BOOL and GetLastError() call is needed to get error code. AFAIR, when I tested this code, most HTTP-related errors were translated to RPC_S_SERVER_UNAVAILABLE by rpcrt4. That may be a better choice here as well. Jacek