[Bugfix][API-463][API-466][wifi] fix lynq_sta_ssid_password_get & lynq_get_sta_saved_ap
Change-Id: Ic4e674df1744124aa654f9b8af92f753955f0334
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 37531c6..1424065 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -1351,13 +1351,21 @@
int lynq_sta_ssid_password_get(lynq_wifi_index_e idx, ap_info_s *ap, char *password) { // @todo
FILE * fp;
- int len, ret;
+ int len, ret, network_len;
int count, index;
char *split_lines[128] = {0};
char *buff, *p;
+ network_len = 0;
+ p = NULL;
+
CHECK_IDX(idx, CTRL_STA);
+ if (NULL == password) {
+ printf("bad param\n");
+ return -1;
+ }
+
fp = fopen("/data/wifi/wg870/wpa_supplicant.conf", "rb");
if (NULL == fp) {
printf("open file fail\n");
@@ -1382,7 +1390,8 @@
buff[index] = '\0';
break;
}
- len = buff + index - p;
+ network_len = buff + index - p;
+ break;
}
if (strstr(p, ap->ap_ssid) != NULL) {
@@ -1390,11 +1399,11 @@
}
}
- if (index >= len) {
+ if (index >= len || NULL == p || network_len <= 0) {
return -1;
}
- count = lynq_split(p, len, '\n', split_lines);
+ count = lynq_split(p, network_len, '\n', split_lines);
ret = -1;
for(index=0; index < count; index++) {
@@ -1960,9 +1969,10 @@
int lynq_get_sta_saved_ap(lynq_wifi_index_e idx, saved_ap_info_s ** list, int * len)
{
- int count, index;
+ int count, index, ssid_len;
int net_no_list[128];
char freq[16];
+ char *ssid_ptr;
if (list == NULL || len == NULL) {
printf("bad param\n");
@@ -1977,16 +1987,25 @@
printf("count is %d\n", count);
*list = malloc(sizeof (saved_ap_info_s) * count);
+ memset(*list, 0, sizeof (saved_ap_info_s) * count);
*len = count;
for (index=0; index < count; index++) {
printf("to get ssid %d\n", index);
inner_get_param(CTRL_STA, net_no_list[index], "ssid", (*list)[index].base_info.ap_ssid);
- printf("to get bssid\n");
+
+ ssid_ptr = (*list)[index].base_info.ap_ssid;
+ ssid_len = strlen(ssid_ptr);
+ if (ssid_ptr[0] == '\"') {
+ memmove(ssid_ptr, ssid_ptr + 1, ssid_len - 1);
+ ssid_len -= 1;
+ }
+ if (ssid_len > 0 && ssid_ptr[ssid_len - 1] == '\"') {
+ ssid_ptr[ssid_len - 1] = '\0';
+ }
+
inner_get_param(CTRL_STA, net_no_list[index], "bssid", (*list)[index].base_info.ap_mac);
- printf("to get inner_get_network_auth\n");
inner_get_network_auth(CTRL_STA, net_no_list[index], &(*list)[index].base_info.auth);
- printf("to get frequency\n");
if (inner_get_param(CTRL_STA, net_no_list[index], "frequency", freq) == 0) {
(*list)[index].base_info.band = convert_band_from_freq(atoi(freq));
}
@@ -1994,6 +2013,7 @@
(*list)[index].base_info.band = -1;
}
+ lynq_sta_ssid_password_get(idx, & (*list)[index].base_info, (*list)[index].base_info.psw);
}
return 0;