chiark / gitweb /
networkd: fix use-after-free
authorTom Gundersen <teg@jklm.no>
Tue, 19 Aug 2014 13:41:23 +0000 (15:41 +0200)
committerTom Gundersen <teg@jklm.no>
Tue, 19 Aug 2014 13:41:23 +0000 (15:41 +0200)
Elements must be removed from the hashtable before they are freed.

src/network/networkd-network.c

index 803fcdd6099148ceb9601b8ad33a4e471bb83d4f..fc62395217fd5032a8ae8f331514a4ae8b08c9e6 100644 (file)
@@ -172,8 +172,10 @@ void network_free(Network *network) {
 
         netdev_unref(network->bond);
 
-        HASHMAP_FOREACH(netdev, network->stacked_netdevs, i)
+        HASHMAP_FOREACH(netdev, network->stacked_netdevs, i) {
+                hashmap_remove(network->stacked_netdevs, netdev->ifname);
                 netdev_unref(netdev);
+        }
         hashmap_free(network->stacked_netdevs);
 
         while ((route = network->static_routes))