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