summaryrefslogtreecommitdiffstats
path: root/src/responder/common/responder_dp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/common/responder_dp.c')
-rw-r--r--src/responder/common/responder_dp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/responder/common/responder_dp.c b/src/responder/common/responder_dp.c
index ca9cb834d..34fc9f349 100644
--- a/src/responder/common/responder_dp.c
+++ b/src/responder/common/responder_dp.c
@@ -76,6 +76,14 @@ static int sss_dp_req_destructor(void *ptr)
sdp_req->pending_reply = NULL;
}
+ /* Do not call callbacks if the responder is shutting down, because
+ * the top level responder context (pam_ctx, sudo_ctx, ...) may be
+ * already semi-freed and we may end up accessing freed memory.
+ */
+ if (sdp_req->rctx->shutting_down) {
+ return 0;
+ }
+
/* If there are callbacks that haven't been invoked, return
* an error now.
*/