From 3f2c84c2a2b716da36c01c609b6e594030ebc3e3 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Mon, 4 May 2020 14:30:55 -0700 Subject: [PATCH] netdev: fix segfault due to roaming before connected In this situation the kernel is sending a low RSSI event which netdev picks up, but since we set netdev->connected so early the event is forwarded to station before IWD has fully connected. Station then tries to get a neighbor report, which may fail and cause a known frequency scan. If this is a new network the frequency scan tries to get any known frequencies in network_info which will be unset and cause a segfault. This can be avoided by only sending RSSI events when netdev->operational is set rather than netdev->connected. --- src/netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/netdev.c b/src/netdev.c index 69f9ab85..b3c3bf73 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -678,7 +678,7 @@ static void netdev_cqm_event_rssi_threshold(struct netdev *netdev, { int event; - if (!netdev->connected) + if (!netdev->operational) return; if (rssi_event != NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW &&