]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: fix memory leak and assign allocation type 18044/head
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 6 Feb 2025 13:14:55 +0000 (10:14 -0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 6 Feb 2025 16:33:00 +0000 (16:33 +0000)
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>
(cherry picked from commit d1440dadffe90dc743c5b83126b021d7a4a08766)

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 215cc3c5029c83842f95555ceebffd68f35dd84c..982de36941c932af19e31470ebc414b11253bfc1 100644 (file)
@@ -1110,6 +1110,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 ea8b56fee39562e1121d70d8bf37f3784bea6db0..637780ca0f318222e95d33fc09484c0f8920e785 100644 (file)
@@ -1387,8 +1387,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;
        }
@@ -1408,7 +1408,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;
        }
 
@@ -1431,8 +1431,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;
        }
@@ -1452,7 +1452,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;
        }