mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 18:55:40 +03:00
network: fix invalid memory access
This fixes a bug introduced by 959f65d32e
.
This commit is contained in:
parent
f350965b15
commit
033295c188
@ -592,8 +592,8 @@ static void link_detach_from_manager(Link *link) {
|
||||
}
|
||||
|
||||
static Link *link_free(Link *link) {
|
||||
Link *carrier, *master;
|
||||
Address *address;
|
||||
Link *carrier;
|
||||
Route *route;
|
||||
Iterator i;
|
||||
|
||||
@ -661,6 +661,12 @@ static Link *link_free(Link *link) {
|
||||
|
||||
hashmap_free(link->bond_slaves);
|
||||
|
||||
if (link->network) {
|
||||
if (link->network->bond &&
|
||||
link_get(link->manager, link->network->bond->ifindex, &master) >= 0)
|
||||
(void) hashmap_remove(master->bond_slaves, INT_TO_PTR(link->ifindex));
|
||||
}
|
||||
|
||||
return mfree(link);
|
||||
}
|
||||
|
||||
|
@ -1427,9 +1427,6 @@ void manager_free(Manager *m) {
|
||||
sd_netlink_unref(m->genl);
|
||||
sd_resolve_unref(m->resolve);
|
||||
|
||||
while ((network = m->networks))
|
||||
network_free(network);
|
||||
|
||||
while ((link = hashmap_first(m->dhcp6_prefixes)))
|
||||
manager_dhcp6_prefix_remove_all(m, link);
|
||||
hashmap_free(m->dhcp6_prefixes);
|
||||
@ -1445,6 +1442,9 @@ void manager_free(Manager *m) {
|
||||
m->links_requesting_uuid = set_free(m->links_requesting_uuid);
|
||||
set_free(m->duids_requesting_uuid);
|
||||
|
||||
while ((network = m->networks))
|
||||
network_free(network);
|
||||
|
||||
hashmap_free(m->networks_by_name);
|
||||
|
||||
m->netdevs = hashmap_free_with_destructor(m->netdevs, netdev_unref);
|
||||
|
Loading…
Reference in New Issue
Block a user