Fix parsing of invalid devices 60/303060/2
authorJaehyun Kim <jeik01.kim@samsung.com>
Tue, 19 Dec 2023 11:01:20 +0000 (20:01 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Tue, 19 Dec 2023 11:45:52 +0000 (20:45 +0900)
If there are multiple devices,
the remaining devices are parsed even after the desired device is found,
so there is a problem in that
the last parsed value is used as the final value.

Therefore, it has been modified to not parse other devices
if parsing of the desired device is completed.

Change-Id: I90b77c2797a543dd4451252573dbd67a7213aca6
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
src/network_internal.c
src/network_signal.c

index b9b3606ff98a830404dc58a88775568366ddab65..024a411f8a1670fbc636e89b33d118c77831743e 100644 (file)
@@ -272,8 +272,14 @@ int _net_get_tech_state(network_info_s *network_info,
                                                sdata = g_variant_get_string(dev_var, NULL);
                                                WIFI_LOG(WIFI_INFO, "%s [%s]", dev_key, sdata);
 
-                                               if (g_strcmp0(dev_key, "Ifname") == 0)
+                                               if (g_strcmp0(dev_key, "Ifname") == 0) {
+                                                       if (find) {
+                                                               g_variant_unref(dev_var);
+                                                               g_free(dev_key);
+                                                               break;
+                                                       }
                                                        find = g_strcmp0(sdata, network_info->interface_name) == 0 ? TRUE : FALSE;
+                                               }
                                        } else if (g_variant_is_of_type(dev_var, G_VARIANT_TYPE_BOOLEAN)) {
                                                bdata = g_variant_get_boolean(dev_var);
                                                WIFI_LOG(WIFI_INFO, "%s [%s]", dev_key, bdata ? "True" : "False");
index a3e5c4bf9b5015abdd0804a9f0bc30d073406942..4f5410c68ef4f2881d4abb7f39b92e60ded100bc 100644 (file)
@@ -2122,10 +2122,16 @@ static int __net_get_tech_states(network_info_s *network_info, GVariant *message
                                                sdata = g_variant_get_string(dev_var, NULL);
                                                WIFI_LOG(WIFI_INFO, "%s [%s]", dev_key, sdata);
 
-                                               if (g_strcmp0(dev_key, "Ifname") == 0)
+                                               if (g_strcmp0(dev_key, "Ifname") == 0) {
+                                                       if (find) {
+                                                               g_variant_unref(dev_var);
+                                                               g_free(dev_key);
+                                                               break;
+                                                       }
                                                        find = g_strcmp0(sdata, network_info->interface_name) == 0 ? TRUE : FALSE;
-                                               else if (find && g_strcmp0(dev_key, "MAC.Address") == 0)
+                                               } else if (find && g_strcmp0(dev_key, "MAC.Address") == 0) {
                                                        g_strlcpy(network_info->mac_address, sdata, WIFI_MAC_ADDR_LEN + 1);
+                                               }
                                        } else if (g_variant_is_of_type(dev_var, G_VARIANT_TYPE_BOOLEAN)) {
                                                bdata = g_variant_get_boolean(dev_var);
                                                WIFI_LOG(WIFI_INFO, "%s [%s]", dev_key, bdata ? "True" : "False");