From: Tom Gundersen Date: Mon, 31 Mar 2014 08:01:59 +0000 (+0200) Subject: networkd: fix use-after-free X-Git-Tag: v213~499 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=2292547af9638e2b3f7e0e96a56dd6c909e516dc;ds=inline networkd: fix use-after-free Free networks before links (the reverse of creation order). --- diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index b2cb0fab4..ddbdabbff 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -145,13 +145,13 @@ void manager_free(Manager *m) { sd_event_source_unref(m->sigint_event_source); sd_event_unref(m->event); - while ((network = m->networks)) - network_free(network); - while ((link = hashmap_first(m->links))) link_free(link); hashmap_free(m->links); + while ((network = m->networks)) + network_free(network); + while ((netdev = hashmap_first(m->netdevs))) netdev_free(netdev); hashmap_free(m->netdevs);