From: Arran Cudbard-Bell Date: Sun, 17 Jan 2021 22:33:45 +0000 (+0000) Subject: Don't leak session state X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0c18c26e887cc751a9ea3a69fc3ba191a40fe07;p=thirdparty%2Ffreeradius-server.git Don't leak session state --- diff --git a/src/lib/server/request.c b/src/lib/server/request.c index feae0f22543..639a465cb7a 100644 --- a/src/lib/server/request.c +++ b/src/lib/server/request.c @@ -308,17 +308,10 @@ static int _request_free(request_t *request) TALLOC_CTX *state_ctx; fr_dlist_head_t *free_list; - /* - * Ensure any data associated - * with the state ctx is freed. - */ - state_ctx = request->session_state_ctx; - fr_assert(talloc_parent(state_ctx) != request); /* Should never be directly parented */ - if (request->session_state_ctx) { fr_assert(!request->parent || (request->session_state_ctx != request->parent->session_state_ctx)); - talloc_free_children(request->session_state_ctx); - talloc_get_type_abort(request->session_state_ctx, fr_pair_t); + fr_assert(talloc_parent(state_ctx) != request); /* Should never be directly parented */ + talloc_free(request->session_state_ctx); /* Not parented from the request */ } free_list = request_free_list; @@ -329,7 +322,6 @@ static int _request_free(request_t *request) memset(request, 0, sizeof(*request)); request->component = "free_list"; - request->session_state_ctx = state_ctx; /* Use the old, now cleared, state_ctx */ /* * Reinsert into the free list @@ -366,7 +358,6 @@ really_free: */ if (request->session_state_ctx) { fr_assert(!request->parent || (request->session_state_ctx != request->parent->session_state_ctx)); - talloc_free(request->session_state_ctx); }