iwd: Fix a use after free

In connection_removed we use the id.name that was being g_freed a few
lines further down.

Fixes: bea6c40367 ('wifi/iwd: handle forgetting connection profiles')
(cherry picked from commit c1ff06e119)
(cherry picked from commit 03b63a893f)
This commit is contained in:
Andrew Zaborowski 2020-10-23 03:47:29 +02:00 committed by Thomas Haller
parent 42d28ae2e8
commit 09c4fa5a6c
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -634,15 +634,16 @@ connection_removed (NMSettings *settings,
gboolean mapped;
KnownNetworkData *data;
KnownNetworkId id;
gs_free char *ssid_str = NULL;
id.security = nm_wifi_connection_get_iwd_security (conn, &mapped);
if (!mapped)
return;
s_wireless = nm_connection_get_setting_wireless (conn);
id.name = _nm_utils_ssid_to_utf8 (nm_setting_wireless_get_ssid (s_wireless));
ssid_str = _nm_utils_ssid_to_utf8 (nm_setting_wireless_get_ssid (s_wireless));
id.name = ssid_str;
data = g_hash_table_lookup (priv->known_networks, &id);
g_free ((char *) id.name);
if (!data)
return;