Rob Shearman : ole32: Fix memory leaks caused by not calling the channel hook function when extension_size is zero .
Module: wine Branch: master Commit: f2b1a1106b04948c4e8a3409585138c3af4a49ee URL: http://source.winehq.org/git/wine.git/?a=commit;h=f2b1a1106b04948c4e8a340958... Author: Rob Shearman <rob(a)codeweavers.com> Date: Mon Jan 7 17:15:17 2008 +0000 ole32: Fix memory leaks caused by not calling the channel hook function when extension_size is zero. Instead free the allocated memory outside of the channel hook function. --- dlls/ole32/rpc.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/ole32/rpc.c b/dlls/ole32/rpc.c index ad6a39f..31b9eb1 100644 --- a/dlls/ole32/rpc.c +++ b/dlls/ole32/rpc.c @@ -248,8 +248,6 @@ static unsigned char * ChannelHooks_ClientFillBuffer(SChannelHookCallInfo *info, LeaveCriticalSection(&csChannelHook); - HeapFree(GetProcessHeap(), 0, data); - return buffer; } @@ -370,8 +368,6 @@ static unsigned char * ChannelHooks_ServerFillBuffer(SChannelHookCallInfo *info, LeaveCriticalSection(&csChannelHook); - HeapFree(GetProcessHeap(), 0, data); - return buffer; } @@ -563,6 +559,8 @@ static HRESULT WINAPI ServerRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, } } + HeapFree(GetProcessHeap(), 0, channel_hook_data); + /* store the prefixed data length so that we can restore the real buffer * later */ message_state->prefix_data_len = (char *)msg->Buffer - (char *)orpcthat; @@ -751,6 +749,8 @@ static HRESULT WINAPI ClientRpcChannelBuffer_GetBuffer(LPRPCCHANNELBUFFER iface, msg->BufferLength -= message_state->prefix_data_len; } + HeapFree(GetProcessHeap(), 0, channel_hook_data); + TRACE("-- %ld\n", status); return HRESULT_FROM_WIN32(status);
participants (1)
-
Alexandre Julliard