} else if (g_strcmp0(key, "BSSID.List") == 0) {
GVariantIter *iter_sub = NULL;
net_profile_bssid_list_s *bssid_list = NULL;
+ gchar *bssid_key = NULL;
+ GVariant *bssid_var = NULL;
g_variant_get(var, "a{sv}", &iter_sub);
- while (g_variant_iter_next(iter_sub, "{sv}", &value, &var)) {
- if (g_strcmp0(value, "BSSID") == 0) {
+ while (g_variant_iter_loop(iter_sub, "{sv}", &bssid_key,
+ &bssid_var)) {
+ if (g_strcmp0(bssid_key, "BSSID") == 0) {
bssid_list = (net_profile_bssid_list_s *)g_try_malloc0(sizeof(net_profile_bssid_list_s));
if (bssid_list) {
- value = g_variant_get_string(var, NULL);
+ value = g_variant_get_string(bssid_var, NULL);
if (value != NULL)
g_strlcpy(bssid_list->bssid, value, 18);
WIFI_LOG(WIFI_ERROR, "Value is empty");
} else {
WIFI_LOG(WIFI_ERROR, "Failed to allocate memory.");
+ g_variant_unref(bssid_var);
+ g_free(bssid_key);
break;
}
- } else if (bssid_list && g_strcmp0(value, "Strength") == 0) {
- bssid_list->strength = (int)g_variant_get_uint16(var);
- } else if (bssid_list && g_strcmp0(value, "Frequency") == 0) {
- bssid_list->frequency = (int)g_variant_get_uint16(var);
- ProfInfo->bssid_list = g_slist_append(ProfInfo->bssid_list, bssid_list);
+ } else if (bssid_list && g_strcmp0(bssid_key, "Strength") == 0) {
+ bssid_list->strength = (int)g_variant_get_uint16(bssid_var);
+ } else if (bssid_list && g_strcmp0(bssid_key, "Frequency") == 0) {
+ bssid_list->frequency = (int)g_variant_get_uint16(bssid_var);
+ ProfInfo->bssid_list = g_slist_append(ProfInfo->bssid_list,
+ bssid_list);
}
}
g_variant_iter_free(iter_sub);
goto done;
}
+ Error = NET_ERR_NO_PROFILE;
g_variant_get(message, "(a(oa{sv}))", &iter);
while (g_variant_iter_loop(iter, "(oa{sv})", &path, &service)) {
if (g_strcmp0(ProfileName, path) == 0) {
//LCOV_EXCL_STOP
-static void __clear_profile_list(GSList **iterator)
+void __clear_profile_list(GSList **iterator)
{
if (*iterator) {
*iterator = g_slist_nth(*iterator, 0);
GSList *list;
net_profile_info_s *ap_info = NULL;
- if (profile_name == NULL)
+ if (profile_name == NULL || profile_info == NULL)
return;
WIFI_LOG(WIFI_INFO, "%s state changed : %s", profile_name, __convert_ap_state_to_string(state));
break;
}
- if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE)
+ if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE) {
__state_changed_cb(event_cb->ProfileName, &prof_info,
WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED);
- else
+
+ /* Free internal GSList */
+ if (prof_info.vsie_list) {
+ g_slist_free_full(prof_info.vsie_list, g_free);
+ prof_info.vsie_list = NULL;
+ }
+
+ if (prof_info.bssid_list) {
+ g_slist_free_full(prof_info.bssid_list, g_free);
+ prof_info.bssid_list = NULL;
+ }
+ } else
__state_changed_cb(event_cb->ProfileName, NULL,
WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED);
switch (event_cb->Error) {
case NET_ERR_NONE:
- if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE)
+ if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE) {
__state_changed_cb(event_cb->ProfileName, &prof_info,
WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED);
- else
+
+ /* Free internal GSList */
+ if (prof_info.vsie_list) {
+ g_slist_free_full(prof_info.vsie_list, g_free);
+ prof_info.vsie_list = NULL;
+ }
+
+ if (prof_info.bssid_list) {
+ g_slist_free_full(prof_info.bssid_list, g_free);
+ prof_info.bssid_list = NULL;
+ }
+ } else
__state_changed_cb(event_cb->ProfileName, NULL,
WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED);
WIFI_LOG(WIFI_INFO, "state: %s", __convert_ap_state_to_string(ap_state));
WIFI_LOG(WIFI_INFO, "profile name: %s", event_cb->ProfileName);
- if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE)
+ if (net_get_profile_info(event_cb->ProfileName, &prof_info) == NET_ERR_NONE) {
__state_changed_cb(event_cb->ProfileName, &prof_info, ap_state);
- else if (ap_state == WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED) {
+
+ /* Free internal GSList */
+ if (prof_info.vsie_list) {
+ g_slist_free_full(prof_info.vsie_list, g_free);
+ prof_info.vsie_list = NULL;
+ }
+
+ if (prof_info.bssid_list) {
+ g_slist_free_full(prof_info.bssid_list, g_free);
+ prof_info.bssid_list = NULL;
+ }
+ } else if (ap_state == WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED) {
net_profile_info_s *profile = NULL;
for (list = profile_iterator; list; list = list->next) {
profile = (net_profile_info_s *)list->data;