Use 'raw ssid' to create group name instead of ssid. 06/241006/3 submit/tizen/20200818.124301
authorNiraj Kumar Goit <niraj.g@samsung.com>
Thu, 13 Aug 2020 11:40:46 +0000 (17:10 +0530)
committerNiraj Kumar Goit <niraj.g@samsung.com>
Thu, 13 Aug 2020 11:59:43 +0000 (17:29 +0530)
Cause:
When AP name is in EUC-KR character, there is mismatch in
group name created using ssid and the profiles received from connman.

Solution:
To keep in sync with connman, creating group name using raw ssid
to compare profiles for wireless connection.

Change-Id: I95d0d71fc10bf99775b3fc892e4ed806a62ba773
Signed-off-by: Niraj Kumar Goit <niraj.g@samsung.com>
include/network_dbus.h
include/network_interface.h
packaging/capi-network-wifi-manager.spec
src/network_dbus.c
src/network_internal.c
src/wifi_internal.c

index 9f831b8..226379e 100755 (executable)
@@ -77,6 +77,8 @@ typedef struct {
        char *private_key_file;
        char *private_key_password;
        char *eap_keymgmt_type;
+       unsigned char *raw_ssid;
+       int raw_ssid_len;
        gboolean is_hidden;
 } net_wifi_connect_service_info_t;
 
index 355295e..0487159 100755 (executable)
@@ -219,6 +219,8 @@ typedef struct {
 
 typedef struct {
        char essid[NET_WLAN_ESSID_LEN + 1];             /** Basic feature */
+       unsigned char raw_ssid[NET_WLAN_RAW_SSID_LEN + 1];      /** Raw SSID bytes */
+       int raw_ssid_len;                               /** Raw SSID length */
        wlan_connection_mode_type_e wlan_mode;  /** Infrastructure / ad-hoc / auto mode */
        wlan_security_info_s security_info;             /** Security mode and authentication info */
        gboolean is_hidden;                                             /** Hidden network */
index 7e44a7e..7775d4b 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          capi-network-wifi-manager
 Summary:       Network Wi-Fi library in TIZEN C API
-Version:       1.1.52
+Version:       1.1.53
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index 99c8334..00e6769 100755 (executable)
@@ -676,8 +676,8 @@ static void __net_set_passpoint_reply(GObject *source_object, GAsyncResult *res,
        __NETWORK_FUNC_EXIT__;
 }
 
-static char *__net_make_group_name(const char *ssid,
-               const char *net_mode, const char *sec)
+static char *__net_make_group_name(unsigned char *raw_ssid,
+               int raw_ssid_len, const char *net_mode, const char *sec)
 {
        char *buf = NULL;
        const char *hidden_str = "hidden";
@@ -691,9 +691,8 @@ static char *__net_make_group_name(const char *ssid,
        if (net_mode == NULL || sec == NULL)
                return NULL;
 
-       if (NULL != ssid) {
-               ssid_len = strlen(ssid);
-               actual_len = ssid_len * 2;
+       if (NULL != raw_ssid) {
+               actual_len = raw_ssid_len * 2;
        } else {
                ssid_len = strlen(hidden_str);
                actual_len = ssid_len;
@@ -713,9 +712,9 @@ static char *__net_make_group_name(const char *ssid,
        if (buf == NULL)
                return NULL;
 
-       if (NULL != ssid) {
-               for (i = 0; i < ssid_len; i++)
-                       g_snprintf(ssid_hex + i * 2, 3, "%02x", ssid[i]);
+       if (NULL != raw_ssid) {
+               for (i = 0; i < raw_ssid_len; i++)
+                       g_snprintf(ssid_hex + i * 2, 3, "%02x", raw_ssid[i]);
        } else {
                g_snprintf(ssid_hex, strlen(hidden_str) + 1, "%s", hidden_str);
        }
@@ -1268,7 +1267,8 @@ int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connec
 
        /* Get group name with prefix 'ssid' in hex */
        grp_name = __net_make_group_name(wifi_connection_info->is_hidden == TRUE ?
-                               NULL : wifi_connection_info->ssid,
+                       NULL : wifi_connection_info->raw_ssid,
+                       wifi_connection_info->raw_ssid_len,
                        wifi_connection_info->mode,
                        wifi_connection_info->security);
        if (NULL == grp_name) {
@@ -1286,8 +1286,6 @@ int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connec
                goto error; //LCOV_EXCL_LINE
        }
 
-
-
        for (list = profile_list; list; list = list->next) {
                prof_info = (net_profile_info_s *)list->data;
                if (g_strstr_len(prof_info->ProfileName,
@@ -1314,7 +1312,8 @@ int _net_dbus_connect_service(const net_wifi_connect_service_info_t *wifi_connec
        }
        if (wifi_connection_info->is_hidden == TRUE) {
                //LCOV_EXCL_START
-               char *target_name = __net_make_group_name(wifi_connection_info->ssid,
+               char *target_name = __net_make_group_name(wifi_connection_info->raw_ssid,
+                               wifi_connection_info->raw_ssid_len,
                                wifi_connection_info->mode,
                                wifi_connection_info->security);
 
index 08a9dc7..91d5925 100755 (executable)
@@ -247,6 +247,9 @@ int _net_open_connection_with_wifi_info(const net_wifi_connection_info_s* wifi_i
 
        wifi_connection_info.ssid = (char *)wifi_info->essid;
 
+       wifi_connection_info.raw_ssid = (unsigned char *)wifi_info->raw_ssid;
+       wifi_connection_info.raw_ssid_len = wifi_info->raw_ssid_len;
+
        wifi_connection_info.is_hidden = wifi_info->is_hidden;
 
        switch (wifi_info->security_info.sec_mode) {
index c35c687..79cf498 100755 (executable)
@@ -532,6 +532,8 @@ static void __convert_profile_info_to_wifi_info(net_wifi_connection_info_s *wifi
                                                                net_profile_info_s *ap_info)
 {
        g_strlcpy(wifi_info->essid, ap_info->essid, NET_WLAN_ESSID_LEN+1);
+       memcpy(&wifi_info->raw_ssid, &ap_info->raw_ssid, NET_WLAN_RAW_SSID_LEN+1);
+       wifi_info->raw_ssid_len = ap_info->raw_ssid_len;
        wifi_info->wlan_mode = ap_info->wlan_mode;
        memcpy(&wifi_info->security_info, &ap_info->security_info, sizeof(wlan_security_info_s));
        wifi_info->is_hidden = ap_info->is_hidden;