]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: fix memory leak and assign allocation type 18038/head
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 6 Feb 2025 13:14:55 +0000 (10:14 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 6 Feb 2025 13:17:19 +0000 (10:17 -0300)
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>
pimd/pim_memory.c
pimd/pim_memory.h
pimd/pim_msdp.c
pimd/pim_nb_config.c

index 2c35bc6473688fce8de64692c86d579f53cff6c9..f918cbd1467a9b1a5f25f6c8b343b39fbac400a8 100644 (file)
@@ -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");
index b44d3e191a0bb3f691985e237b5d14da953649d9..5c9bdad50cfadff271b8d0c99db514c283637717 100644 (file)
@@ -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);
index 46d5f4881f15b5f43edeec523b25065e5323aab5..1fd27d383ea553b17867f5c85467cfd62af643d0 100644 (file)
@@ -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;
index 51f061588407c0ce284ff106241af9499761b835..6af92919972215bb2930e2e6d2ca2004caeec5ff 100644 (file)
@@ -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;
        }