diff options
author | Thomas Haller <thaller@redhat.com> | 2017-01-04 12:11:09 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-01-04 14:05:27 +0100 |
commit | d9efe73fed8b33dace17b0ebed180beb0eae78c6 (patch) | |
tree | b6183852acc0ae644393e85ee8114294a4cba920 | |
parent | 49ec12bab32c24124223de3f369530fd31f62451 (diff) | |
download | NetworkManager-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.c | 4 | ||||
-rw-r--r-- | src/devices/wifi/nm-wifi-ap.c | 16 | ||||
-rw-r--r-- | src/devices/wifi/nm-wifi-ap.h | 2 |
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, |