connman_wifi_load_ssid() can return NULL. Best not to dereference that.
diff --git a/plugins/supplicant.c b/plugins/supplicant.c
index 276fd91..34d72a0 100644
--- a/plugins/supplicant.c
+++ b/plugins/supplicant.c
@@ -612,29 +612,30 @@ static void add_interface_reply(DBusPendingCall *call,
void *user_data)
hex_ssids = connman_wifi_load_ssid();
- for (i = 0; hex_ssids[i]; i++) {
- unsigned char *ssid;
- unsigned int j, k = 0, hex;
- size_t hex_ssid_len;
+ if (hex_ssids) {
+ for (i = 0; hex_ssids[i]; i++) {
+ unsigned char *ssid;
+ unsigned int j, k = 0, hex;
+ size_t hex_ssid_len;
- hex_ssid = hex_ssids[i];
- hex_ssid_len = strlen(hex_ssid);
+ hex_ssid = hex_ssids[i];
+ hex_ssid_len = strlen(hex_ssid);
- ssid = g_try_malloc0(hex_ssid_len / 2 + 1);
- if (ssid == NULL)
- break;
+ ssid = g_try_malloc0(hex_ssid_len / 2 + 1);
+ if (ssid == NULL)
+ break;
- for (j = 0, k = 0; j < hex_ssid_len; j += 2) {
- sscanf(hex_ssid + j, "%02x", &hex);
- ssid[k++] = hex;
- }
+ for (j = 0, k = 0; j < hex_ssid_len; j += 2) {
+ sscanf(hex_ssid + j, "%02x", &hex);
+ ssid[k++] = hex;
+ }
- if (add_hidden_network(task, ssid, hex_ssid_len / 2) < 0)
- break;
+ if (add_hidden_network(task, ssid, hex_ssid_len / 2) <
0)
+ break;
+ }
+ g_strfreev(hex_ssids);
}
- g_strfreev(hex_ssids);
-
dbus_message_unref(reply);
dbus_pending_call_unref(call);
--
David Woodhouse Open Source Technology Centre
[email protected] Intel Corporation
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman