From: Tobias Brunner Date: Tue, 13 Sep 2022 13:03:24 +0000 (+0200) Subject: ike-rekey: Correctly destroy colliding rekey task X-Git-Tag: 5.9.8dr4~11^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2456376aeb1458c21de5b7f847b1567475f9cfb;p=thirdparty%2Fstrongswan.git ike-rekey: Correctly destroy colliding rekey task Using DESTROY_IF() this way doesn't correctly check if the pointer is set. Fixes: 7ffeed01c0d7 ("ike-rekey: Remove collision task type checks") --- diff --git a/src/libcharon/sa/ikev2/tasks/ike_rekey.c b/src/libcharon/sa/ikev2/tasks/ike_rekey.c index 85c47efc09..fac008715b 100644 --- a/src/libcharon/sa/ikev2/tasks/ike_rekey.c +++ b/src/libcharon/sa/ikev2/tasks/ike_rekey.c @@ -449,7 +449,10 @@ METHOD(ike_rekey_t, collide, bool, "ignore"); break; } - DESTROY_IF(&this->collision->public.task); + if (this->collision) + { + this->collision->public.task.destroy(&this->collision->public.task); + } this->collision = rekey; return TRUE; } @@ -478,7 +481,10 @@ static void cleanup(private_ike_rekey_t *this) cur_sa = charon->bus->get_sa(charon->bus); DESTROY_IF(this->new_sa); charon->bus->set_sa(charon->bus, cur_sa); - DESTROY_IF(&this->collision->public.task); + if (this->collision) + { + this->collision->public.task.destroy(&this->collision->public.task); + } } METHOD(task_t, migrate, void,