]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: Prevent usage after free
authorDonald Sharp <sharpd@nvidia.com>
Thu, 24 Sep 2020 11:56:13 +0000 (07:56 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Thu, 24 Sep 2020 11:56:13 +0000 (07:56 -0400)
Store the vrf_id so that when we free the area we can
do further cleanup work.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
isisd/isis_nb_config.c

index 0988fe85784054180d513be4cce828da156ab784..6edbc2956ae73796eb5150a6f8b6e19c03ca2612 100644 (file)
@@ -80,14 +80,18 @@ int isis_instance_create(struct nb_cb_create_args *args)
 int isis_instance_destroy(struct nb_cb_destroy_args *args)
 {
        struct isis_area *area;
+       vrf_id_t vrf_id;
 
        if (args->event != NB_EV_APPLY)
                return NB_OK;
        area = nb_running_unset_entry(args->dnode);
+
+       vrf_id = area->isis->vrf_id;
+
        isis_area_destroy(area);
 
        /* remove ldp-sync config */
-       if (area->isis->vrf_id == VRF_DEFAULT)
+       if (vrf_id == VRF_DEFAULT)
                isis_ldp_sync_gbl_exit(true);
 
        return NB_OK;