Index: wpa_supplicant/dbus/dbus_new_handlers.c |
diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c |
index 8e87e204b39f1f020fe8b4ff8cc0fd19d86f3666..40e2c13fbd390e6e98b07fcdb3ed1f6fbf65bf19 100644 |
--- a/wpa_supplicant/dbus/dbus_new_handlers.c |
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c |
@@ -995,21 +995,25 @@ static int wpas_dbus_get_scan_ssids(DBusMessage *message, DBusMessageIter *var, |
dbus_message_iter_recurse(&array_iter, &sub_array_iter); |
dbus_message_iter_get_fixed_array(&sub_array_iter, &val, &len); |
- if (len == 0) { |
- dbus_message_iter_next(&array_iter); |
- continue; |
- } |
- ssid = os_malloc(len); |
- if (ssid == NULL) { |
- wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: " |
- "out of memory. Cannot allocate memory for " |
- "SSID"); |
- *reply = dbus_message_new_error( |
- message, DBUS_ERROR_NO_MEMORY, NULL); |
- return -1; |
+ if (len != 0) { |
+ ssid = os_malloc(len); |
+ if (ssid == NULL) { |
+ wpa_printf(MSG_DEBUG, |
+ "wpas_dbus_handler_scan[dbus]: " |
+ "out of memory. Cannot allocate " |
+ "memory for SSID"); |
+ *reply = dbus_message_new_error( |
+ message, DBUS_ERROR_NO_MEMORY, |
+ NULL); |
+ return -1; |
+ } |
+ os_memcpy(ssid, val, len); |
+ } else { |
+ /* Allow zero-length SSIDs */ |
+ ssid = NULL; |
} |
- os_memcpy(ssid, val, len); |
+ |
ssids[ssids_num].ssid = ssid; |
ssids[ssids_num].ssid_len = len; |