From ecbc3329788de254346d7ea84770e09cc22dbc9c Mon Sep 17 00:00:00 2001 From: Alexey Tikhonov Date: Mon, 18 Jul 2022 21:59:03 +0200 Subject: [PATCH] RESPONDER: don't execute sss_dp_callback_destructor() if responder is being shut down. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: https://github.com/SSSD/sssd/issues/6270 Reviewed-by: Pavel Březina Reviewed-by: Tomáš Halman --- src/responder/common/responder_dp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c index a49b31528..0cc5c5424 100644 --- a/src/responder/common/responder_dp.c +++ b/src/responder/common/responder_dp.c @@ -35,6 +35,7 @@ struct sss_dp_callback { struct sss_dp_callback *prev; struct sss_dp_callback *next; + struct resp_ctx *rctx; struct tevent_req *req; struct sss_dp_req *sdp_req; }; @@ -58,9 +59,14 @@ static int sss_dp_callback_destructor(void *ptr) struct sss_dp_callback *cb = talloc_get_type(ptr, struct sss_dp_callback); + /* `sdp_req` might be already freed if responder is being shut down */ + if (cb->rctx->shutting_down) { + return 0; + } + DLIST_REMOVE(cb->sdp_req->cb_list, cb); - return EOK; + return 0; } static int sss_dp_req_destructor(void *ptr) @@ -396,6 +402,7 @@ sss_dp_issue_request(TALLOC_CTX *mem_ctx, struct resp_ctx *rctx, goto fail; } + cb->rctx = rctx; cb->req = nreq; cb->sdp_req = sdp_req; -- 2.37.3