Skip to content

Commit c195364

Browse files
committed
network: fix crash in wireguard_done()
Fixes another issue in systemd#10629.
1 parent 56ba90c commit c195364

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/network/netdev/wireguard.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,10 +717,11 @@ static void wireguard_done(NetDev *netdev) {
717717
Wireguard *w;
718718
WireguardPeer *peer;
719719
WireguardIPmask *mask;
720+
WireguardEndpoint *e;
720721

721722
assert(netdev);
722723
w = WIREGUARD(netdev);
723-
assert(!w->unresolved_endpoints);
724+
assert(w);
724725

725726
while ((peer = w->peers)) {
726727
LIST_REMOVE(peers, w->peers, peer);
@@ -730,6 +731,16 @@ static void wireguard_done(NetDev *netdev) {
730731
}
731732
free(peer);
732733
}
734+
735+
while ((e = w->unresolved_endpoints)) {
736+
LIST_REMOVE(endpoints, w->unresolved_endpoints, e);
737+
wireguard_endpoint_free(e);
738+
}
739+
740+
while ((e = w->failed_endpoints)) {
741+
LIST_REMOVE(endpoints, w->failed_endpoints, e);
742+
wireguard_endpoint_free(e);
743+
}
733744
}
734745

735746
const NetDevVTable wireguard_vtable = {

src/network/networkd-manager.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,7 @@ void manager_free(Manager *m) {
14181418

14191419
sd_netlink_unref(m->rtnl);
14201420
sd_netlink_unref(m->genl);
1421+
sd_resolve_unref(m->resolve);
14211422

14221423
while ((network = m->networks))
14231424
network_free(network);
@@ -1456,8 +1457,6 @@ void manager_free(Manager *m) {
14561457

14571458
sd_event_unref(m->event);
14581459

1459-
sd_resolve_unref(m->resolve);
1460-
14611460
sd_device_monitor_unref(m->device_monitor);
14621461

14631462
sd_bus_unref(m->bus);

0 commit comments

Comments
 (0)