core: fix potential use after free

_LOGD uses 'self', so don't unref it until after the _LOGD. Discovered
by Coverity.
This commit is contained in:
Íñigo Huguet 2025-09-10 07:22:31 +02:00
parent 4d17064f2a
commit 0d3fef3bcd

View file

@ -703,16 +703,16 @@ nm_netns_ip_reservation_release(NMNetnsIPReservation *res)
if (!g_hash_table_remove(*table, res))
nm_assert_not_reached();
if (g_hash_table_size(*table) == 0) {
nm_clear_pointer(table, g_hash_table_unref);
g_object_unref(self);
}
_LOGD("%s: release IP address reservation %s/%u",
desc->name,
nm_inet4_ntop(res->addr, buf),
desc->prefix_len);
if (g_hash_table_size(*table) == 0) {
nm_clear_pointer(table, g_hash_table_unref);
g_object_unref(self);
}
res->_self = NULL;
nm_g_slice_free(res);
}