summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-01-04 12:11:09 +0100
committerThomas Haller <thaller@redhat.com>2017-01-04 14:05:27 +0100
commitd9efe73fed8b33dace17b0ebed180beb0eae78c6 (patch)
treeb6183852acc0ae644393e85ee8114294a4cba920
parent49ec12bab32c24124223de3f369530fd31f62451 (diff)
downloadNetworkManager-d9efe73fed8b33dace17b0ebed180beb0eae78c6.tar.gz
wifi: fix nm_wifi_ap_get_id() to parse the ID as guint64 from the exported path
-rw-r--r--src/devices/wifi/nm-device-wifi.c4
-rw-r--r--src/devices/wifi/nm-wifi-ap.c16
-rw-r--r--src/devices/wifi/nm-wifi-ap.h2
3 files changed, 16 insertions, 6 deletions
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 309d950fd5..9556adfc2d 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -1000,8 +1000,8 @@ can_auto_connect (NMDevice *device,
static int
ap_id_compare (gconstpointer p_a, gconstpointer p_b, gpointer user_data)
{
- guint32 a_id = nm_wifi_ap_get_id (*((NMWifiAP **) p_a));
- guint32 b_id = nm_wifi_ap_get_id (*((NMWifiAP **) p_b));
+ guint64 a_id = nm_wifi_ap_get_id (*((NMWifiAP **) p_a));
+ guint64 b_id = nm_wifi_ap_get_id (*((NMWifiAP **) p_b));
return a_id < b_id ? -1 : (a_id == b_id ? 0 : 1);
}
diff --git a/src/devices/wifi/nm-wifi-ap.c b/src/devices/wifi/nm-wifi-ap.c
index c5d8af25ba..9d8ba42c61 100644
--- a/src/devices/wifi/nm-wifi-ap.c
+++ b/src/devices/wifi/nm-wifi-ap.c
@@ -96,13 +96,23 @@ nm_wifi_ap_get_supplicant_path (NMWifiAP *ap)
return NM_WIFI_AP_GET_PRIVATE (ap)->supplicant_path;
}
-guint32
+guint64
nm_wifi_ap_get_id (NMWifiAP *ap)
{
+ const char *path;
+ guint64 i;
+
g_return_val_if_fail (NM_IS_WIFI_AP (ap), 0);
- g_return_val_if_fail (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (ap)), 0);
- return atoi (strrchr (nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap)), '/') + 1);
+ path = nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap));
+ g_return_val_if_fail (path, 0);
+
+ nm_assert (g_str_has_prefix (path, NM_DBUS_PATH_ACCESS_POINT"/"));
+
+ i = _nm_utils_ascii_str_to_int64 (&path[NM_STRLEN (NM_DBUS_PATH_ACCESS_POINT"/")], 10, 1, G_MAXINT64, 0);
+
+ nm_assert (i);
+ return i;
}
const GByteArray * nm_wifi_ap_get_ssid (const NMWifiAP *ap)
diff --git a/src/devices/wifi/nm-wifi-ap.h b/src/devices/wifi/nm-wifi-ap.h
index f0edcc9436..5a2a2e58b5 100644
--- a/src/devices/wifi/nm-wifi-ap.h
+++ b/src/devices/wifi/nm-wifi-ap.h
@@ -66,7 +66,7 @@ gboolean nm_wifi_ap_complete_connection (NMWifiAP *self,
GError **error);
const char * nm_wifi_ap_get_supplicant_path (NMWifiAP *ap);
-guint32 nm_wifi_ap_get_id (NMWifiAP *ap);
+guint64 nm_wifi_ap_get_id (NMWifiAP *ap);
const GByteArray *nm_wifi_ap_get_ssid (const NMWifiAP *ap);
void nm_wifi_ap_set_ssid (NMWifiAP *ap,
const guint8 *ssid,