From 00d054aae53c2835d50241f981c265b0bba9c29e Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 2 Oct 2023 16:24:01 +0200 Subject: [PATCH] ikev2: Correctly maintain allocated reqid during make-before-break reauth --- src/libcharon/sa/ikev2/task_manager_v2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index 978ea4120..8c07cf272 100644 --- a/src/libcharon/sa/ikev2/task_manager_v2.c +++ b/src/libcharon/sa/ikev2/task_manager_v2.c @@ -2126,6 +2126,7 @@ static void trigger_mbb_reauth(private_task_manager_t *this) ike_sa_t *new; host_t *host; queued_task_t *queued; + uint32_t reqid; bool children = FALSE; new = charon->ike_sa_manager->create_new(charon->ike_sa_manager, @@ -2165,7 +2166,12 @@ static void trigger_mbb_reauth(private_task_manager_t *this) cfg = child_sa->get_config(child_sa); child_create = child_create_create(new, cfg->get_ref(cfg), FALSE, NULL, NULL); - child_create->use_reqid(child_create, child_sa->get_reqid(child_sa)); + reqid = child_sa->get_reqid_ref(child_sa); + if (reqid) + { + child_create->use_reqid(child_create, reqid); + charon->kernel->release_reqid(charon->kernel, reqid); + } child_create->use_marks(child_create, child_sa->get_mark(child_sa, TRUE).value, child_sa->get_mark(child_sa, FALSE).value);