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) { - 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); + const char *path; + guint64 i; - return atoi (strrchr (nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap)), '/') + 1); + g_return_val_if_fail (NM_IS_WIFI_AP (ap), 0); + + 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,