From de49fa1b1c33a9b977db5aa12eab7267e7e70e38 Mon Sep 17 00:00:00 2001 From: Cheoleun Moon Date: Wed, 13 May 2020 19:19:08 +0900 Subject: [PATCH] Handle the case that best_bss is NULL Change-Id: I4a813bb3327f400df0050a850ec72fa8b99c870b Signed-off-by: Cheoleun Moon --- gsupplicant/supplicant.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gsupplicant/supplicant.c b/gsupplicant/supplicant.c index b16625c..36625d0 100755 --- a/gsupplicant/supplicant.c +++ b/gsupplicant/supplicant.c @@ -2459,16 +2459,30 @@ static char *create_group(struct g_supplicant_bss *bss) return g_string_free(str, FALSE); } +static void update_network_with_best_bss(GSupplicantNetwork *network, + struct g_supplicant_bss *best_bss) +{ + network->signal = best_bss->signal; + network->frequency = best_bss->frequency; + network->best_bss = best_bss; +} + static bool update_best_bss(GSupplicantNetwork *network, struct g_supplicant_bss *bss, struct g_supplicant_bss *best_bss) { int score_new; int score_best; + if (network->best_bss == NULL) { + update_network_with_best_bss(network, bss); + return true; + } + score_new = calculate_score( compare_bssid(bss->bssid, network->last_connected_bssid), get_assoc_reject_cnt(network->assoc_reject_table, bss->bssid), bss->frequency, bss->signal); + score_best = calculate_score( compare_bssid(network->best_bss->bssid, network->last_connected_bssid), get_assoc_reject_cnt(network->assoc_reject_table, network->best_bss->bssid), @@ -2479,9 +2493,7 @@ static bool update_best_bss(GSupplicantNetwork *network, MAC2STR(bss->bssid), score_new, MAC2STR(network->best_bss->bssid), score_best); - network->signal = bss->signal; - network->frequency = bss->frequency; - network->best_bss = bss; + update_network_with_best_bss(network, bss); SUPPLICANT_DBG("Update best BSS for %s", network->name); -- 2.7.4