ikev2: fix memory leak in child SA 74/23674/2
authorFilip Tehlar <[email protected]>
Wed, 23 Oct 2019 20:39:38 +0000 (20:39 +0000)
committerAndrew Yourtchenko <[email protected]>
Thu, 6 Feb 2020 12:21:41 +0000 (12:21 +0000)
traffic selector vector isn't freed when freeing child SA

Type: fix

Change-Id: Icf6c240db5093f45d141451bad6f6627a61821cf
Signed-off-by: Filip Tehlar <[email protected]>
(cherry picked from commit 99eefc2cfee4f71e1aaad1d420e6d9335072eb2c)

src/plugins/ikev2/ikev2.c

index 27b8704..16c21cb 100644 (file)
@@ -243,19 +243,24 @@ ikev2_sa_free_proposal_vector (ikev2_sa_proposal_t ** v)
   vec_free (*v);
 };
 
+static void
+ikev2_sa_free_child_sa (ikev2_child_sa_t * c)
+{
+  ikev2_sa_free_proposal_vector (&c->r_proposals);
+  ikev2_sa_free_proposal_vector (&c->i_proposals);
+  vec_free (c->sk_ai);
+  vec_free (c->sk_ar);
+  vec_free (c->sk_ei);
+  vec_free (c->sk_er);
+  vec_free (c->tsi);
+  vec_free (c->tsr);
+}
+
 static void
 ikev2_sa_free_all_child_sa (ikev2_child_sa_t ** childs)
 {
   ikev2_child_sa_t *c;
-  vec_foreach (c, *childs)
-  {
-    ikev2_sa_free_proposal_vector (&c->r_proposals);
-    ikev2_sa_free_proposal_vector (&c->i_proposals);
-    vec_free (c->sk_ai);
-    vec_free (c->sk_ar);
-    vec_free (c->sk_ei);
-    vec_free (c->sk_er);
-  }
+  vec_foreach (c, *childs) ikev2_sa_free_child_sa (c);
 
   vec_free (*childs);
 }
@@ -263,13 +268,7 @@ ikev2_sa_free_all_child_sa (ikev2_child_sa_t ** childs)
 static void
 ikev2_sa_del_child_sa (ikev2_sa_t * sa, ikev2_child_sa_t * child)
 {
-  ikev2_sa_free_proposal_vector (&child->r_proposals);
-  ikev2_sa_free_proposal_vector (&child->i_proposals);
-  vec_free (child->sk_ai);
-  vec_free (child->sk_ar);
-  vec_free (child->sk_ei);
-  vec_free (child->sk_er);
-
+  ikev2_sa_free_child_sa (child);
   vec_del1 (sa->childs, child - sa->childs);
 }