From: Tobias Brunner Date: Mon, 2 Oct 2023 14:24:01 +0000 (+0200) Subject: ikev2: Correctly maintain allocated reqid during make-before-break reauth X-Git-Tag: 5.9.12rc1~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00d054aae53c2835d50241f981c265b0bba9c29e;p=thirdparty%2Fstrongswan.git ikev2: Correctly maintain allocated reqid during make-before-break reauth --- diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index 978ea41206..8c07cf272d 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);