summaryrefslogtreecommitdiff
path: root/pimd
diff options
context:
space:
mode:
authorRafael Zalamena <rzalamena@opensourcerouting.org>2025-02-06 10:14:55 -0300
committerRafael Zalamena <rzalamena@opensourcerouting.org>2025-02-06 10:17:19 -0300
commitd1440dadffe90dc743c5b83126b021d7a4a08766 (patch)
tree652f1d76ebf718812f18e0724927256ffa2b4554 /pimd
parenta02ec27693ddfa708ec1f62400af6cea533bf1e8 (diff)
pimd: fix memory leak and assign allocation type
Use a memory allocation specific type for filter names (to help detect memory leaks) and fix a memory leak when releasing peer memory. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim_memory.c1
-rw-r--r--pimd/pim_memory.h1
-rw-r--r--pimd/pim_msdp.c2
-rw-r--r--pimd/pim_nb_config.c12
4 files changed, 10 insertions, 6 deletions
diff --git a/pimd/pim_memory.c b/pimd/pim_memory.c
index 2c35bc6473..f918cbd146 100644
--- a/pimd/pim_memory.c
+++ b/pimd/pim_memory.c
@@ -26,6 +26,7 @@ DEFINE_MTYPE(PIMD, PIM_STATIC_ROUTE, "PIM Static Route");
DEFINE_MTYPE(PIMD, PIM_RP, "PIM RP info");
DEFINE_MTYPE(PIMD, PIM_FILTER_NAME, "PIM RP filter info");
DEFINE_MTYPE(PIMD, PIM_MSDP_PEER, "PIM MSDP peer");
+DEFINE_MTYPE(PIMD, PIM_MSDP_FILTER_NAME, "PIM MSDP peer filter name");
DEFINE_MTYPE(PIMD, PIM_MSDP_MG_NAME, "PIM MSDP mesh-group name");
DEFINE_MTYPE(PIMD, PIM_MSDP_AUTH_KEY, "PIM MSDP authentication key");
DEFINE_MTYPE(PIMD, PIM_MSDP_SA, "PIM MSDP source-active cache");
diff --git a/pimd/pim_memory.h b/pimd/pim_memory.h
index b44d3e191a..5c9bdad50c 100644
--- a/pimd/pim_memory.h
+++ b/pimd/pim_memory.h
@@ -25,6 +25,7 @@ DECLARE_MTYPE(PIM_STATIC_ROUTE);
DECLARE_MTYPE(PIM_RP);
DECLARE_MTYPE(PIM_FILTER_NAME);
DECLARE_MTYPE(PIM_MSDP_PEER);
+DECLARE_MTYPE(PIM_MSDP_FILTER_NAME);
DECLARE_MTYPE(PIM_MSDP_MG_NAME);
DECLARE_MTYPE(PIM_MSDP_SA);
DECLARE_MTYPE(PIM_MSDP_MG);
diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c
index 46d5f4881f..1fd27d383e 100644
--- a/pimd/pim_msdp.c
+++ b/pimd/pim_msdp.c
@@ -1095,6 +1095,8 @@ static void pim_msdp_peer_free(struct pim_msdp_peer *mp)
if (mp->auth_listen_sock != -1)
close(mp->auth_listen_sock);
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_in);
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_out);
XFREE(MTYPE_PIM_MSDP_MG_NAME, mp->mesh_group_name);
mp->pim = NULL;
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c
index 51f0615884..6af9291997 100644
--- a/pimd/pim_nb_config.c
+++ b/pimd/pim_nb_config.c
@@ -1564,8 +1564,8 @@ int pim_msdp_peer_sa_filter_in_modify(struct nb_cb_modify_args *args)
break;
case NB_EV_APPLY:
mp = nb_running_get_entry(args->dnode, NULL, true);
- XFREE(MTYPE_TMP, mp->acl_in);
- mp->acl_in = XSTRDUP(MTYPE_TMP,
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_in);
+ mp->acl_in = XSTRDUP(MTYPE_PIM_MSDP_FILTER_NAME,
yang_dnode_get_string(args->dnode, NULL));
break;
}
@@ -1585,7 +1585,7 @@ int pim_msdp_peer_sa_filter_in_destroy(struct nb_cb_destroy_args *args)
break;
case NB_EV_APPLY:
mp = nb_running_get_entry(args->dnode, NULL, true);
- XFREE(MTYPE_TMP, mp->acl_in);
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_in);
break;
}
@@ -1608,8 +1608,8 @@ int pim_msdp_peer_sa_filter_out_modify(struct nb_cb_modify_args *args)
break;
case NB_EV_APPLY:
mp = nb_running_get_entry(args->dnode, NULL, true);
- XFREE(MTYPE_TMP, mp->acl_out);
- mp->acl_out = XSTRDUP(MTYPE_TMP,
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_out);
+ mp->acl_out = XSTRDUP(MTYPE_PIM_MSDP_FILTER_NAME,
yang_dnode_get_string(args->dnode, NULL));
break;
}
@@ -1629,7 +1629,7 @@ int pim_msdp_peer_sa_filter_out_destroy(struct nb_cb_destroy_args *args)
break;
case NB_EV_APPLY:
mp = nb_running_get_entry(args->dnode, NULL, true);
- XFREE(MTYPE_TMP, mp->acl_out);
+ XFREE(MTYPE_PIM_MSDP_FILTER_NAME, mp->acl_out);
break;
}