The hotspot case can actually result in network being NULL which
ends up crashing when accessing "->secrets". In addition any
secrets on this network were never removed for hotspot networks
since everything happened in network_unset_hotspot.
---
src/network.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/network.c b/src/network.c
index 79f3bd33..b794e609 100644
--- a/src/network.c
+++ b/src/network.c
@@ -1823,6 +1823,11 @@ static void network_unset_hotspot(struct network *network, void
*user_data)
return;
network_set_info(network, NULL);
+
+ if (network->secrets) {
+ l_queue_destroy(network->secrets, eap_secret_info_free);
+ network->secrets = NULL;
+ }
}
static void emit_known_network_removed(struct station *station, void *user_data)
@@ -1850,8 +1855,10 @@ static void emit_known_network_removed(struct station *station,
void *user_data)
if (network && was_hidden)
station_hide_network(station, network);
- l_queue_destroy(network->secrets, eap_secret_info_free);
- network->secrets = NULL;
+ if (network && network->secrets) {
+ l_queue_destroy(network->secrets, eap_secret_info_free);
+ network->secrets = NULL;
+ }
}
static void network_update_hotspot(struct network *network, void *user_data)
--
2.31.1
Show replies by date