From b69e7c451e60ca32de4febbbd337ad8cc78d3dd2 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 8 Jan 2014 11:39:22 -0600 Subject: [PATCH] cli: handle hidden-SSID access points correctly --- cli/src/devices.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/cli/src/devices.c b/cli/src/devices.c index 92270986b7..61717bdd7b 100644 --- a/cli/src/devices.c +++ b/cli/src/devices.c @@ -512,8 +512,8 @@ fill_output_access_point (gpointer data, gpointer user_data) const GByteArray *ssid; const char *bssid; NM80211Mode mode; - char *channel_str, *freq_str, *ssid_str, *ssid_hex_str, *bitrate_str, - *strength_str, *wpa_flags_str, *rsn_flags_str; + char *channel_str, *freq_str, *ssid_str = NULL, *ssid_hex_str = NULL, + *bitrate_str, *strength_str, *wpa_flags_str, *rsn_flags_str; GString *security_str; char *ap_name; const char *sig_level_0 = "____"; @@ -541,8 +541,10 @@ fill_output_access_point (gpointer data, gpointer user_data) strength = MIN (nm_access_point_get_strength (ap), 100); /* Convert to strings */ - ssid_str = nm_utils_ssid_to_utf8 (ssid); - ssid_hex_str = ssid_to_hex ((const char *)ssid->data, ssid->len); + if (ssid) { + ssid_str = nm_utils_ssid_to_utf8 (ssid); + ssid_hex_str = ssid_to_hex ((const char *) ssid->data, ssid->len); + } channel_str = g_strdup_printf ("%u", nm_utils_wifi_freq_to_channel (freq)); freq_str = g_strdup_printf (_("%u MHz"), freq); bitrate_str = g_strdup_printf (_("%u MB/s"), bitrate/1000); @@ -1942,16 +1944,20 @@ find_ap_on_device (NMDevice *device, GByteArray *bssid, const char *ssid) if (ssid) { /* Parameter is SSID */ - const GByteArray *candidate_ssid = nm_access_point_get_ssid (candidate_ap); - char *ssid_tmp = nm_utils_ssid_to_utf8 (candidate_ssid); + const GByteArray *candidate_ssid; - /* Compare SSIDs */ - if (strcmp (ssid, ssid_tmp) == 0) { - ap = candidate_ap; + candidate_ssid = nm_access_point_get_ssid (candidate_ap); + if (candidate_ssid) { + char *ssid_tmp = nm_utils_ssid_to_utf8 (candidate_ssid); + + /* Compare SSIDs */ + if (strcmp (ssid, ssid_tmp) == 0) { + ap = candidate_ap; + g_free (ssid_tmp); + break; + } g_free (ssid_tmp); - break; } - g_free (ssid_tmp); } else if (bssid) { /* Parameter is BSSID */ const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap);