diff --git a/lib/ovs-lldp.c b/lib/ovs-lldp.c index 2d13e971e..863a1b644 100644 --- a/lib/ovs-lldp.c +++ b/lib/ovs-lldp.c @@ -971,18 +971,21 @@ lldp_destroy_dummy(struct lldp *lldp) cfg = lldp->lldpd; - LIST_FOR_EACH_SAFE (hw, h_entries, &cfg->g_hardware) { - ovs_list_remove(&hw->h_entries); - free(hw->h_lport.p_lastframe); - free(hw); + if (cfg) { + LIST_FOR_EACH_SAFE (hw, h_entries, &cfg->g_hardware) { + ovs_list_remove(&hw->h_entries); + free(hw->h_lport.p_lastframe); + free(hw); + } + + LIST_FOR_EACH_SAFE (chassis, list, &cfg->g_chassis) { + ovs_list_remove(&chassis->list); + free(chassis); + } + + free(lldp->lldpd); } - LIST_FOR_EACH_SAFE (chassis, list, &cfg->g_chassis) { - ovs_list_remove(&chassis->list); - free(chassis); - } - - free(lldp->lldpd); free(lldp); } diff --git a/tests/test-aa.c b/tests/test-aa.c index 1c0fb2926..ba21d5908 100644 --- a/tests/test-aa.c +++ b/tests/test-aa.c @@ -183,6 +183,7 @@ test_aa_send(void) (lldp->lldpd == NULL) || ovs_list_is_empty(&lldp->lldpd->g_hardware)) { printf("Error: unable to create dummy lldp instance"); + lldp_destroy_dummy(lldp); return 1; }