]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Fix a memleak
authorQiao Yang <geoyang@ironport.com>
Fri, 5 Sep 2008 12:08:09 +0000 (14:08 +0200)
committerVolker Lendecke <vl@samba.org>
Fri, 5 Sep 2008 12:13:39 +0000 (14:13 +0200)
request.extra_data is not freed if there is no extra_data in response or
when there is some error happens in processing. This patch will free the
buffer right after processing a request before sending back a response.

source/winbindd/winbindd.c

index f75af64f8f7000562c3e8a2ca914540155c48cb9..44b5415726a70c1ce887057d8c1c40ae1d65a575 100644 (file)
@@ -549,7 +549,6 @@ static void response_extra_sent(void *private_data, bool success)
                return;
        }
 
-       SAFE_FREE(state->request.extra_data.data);
        SAFE_FREE(state->response.extra_data.data);
 
        setup_async_read(&state->fd_event, &state->request, sizeof(uint32),
@@ -581,6 +580,8 @@ static void response_main_sent(void *private_data, bool success)
 
 static void request_finished(struct winbindd_cli_state *state)
 {
+       /* Make sure request.extra_data is freed when finish processing a request */
+       SAFE_FREE(state->request.extra_data.data);
        setup_async_write(&state->fd_event, &state->response,
                          sizeof(state->response), response_main_sent, state);
 }