Fix memory leak and some issues 24/314224/2 accepted/tizen/unified/20240709.165208 accepted/tizen/unified/dev/20240710.032429 accepted/tizen/unified/x/20240710.012937
authorJaehyun Kim <jeik01.kim@samsung.com>
Tue, 9 Jul 2024 04:45:06 +0000 (13:45 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Tue, 9 Jul 2024 07:18:28 +0000 (16:18 +0900)
Fix some issues
  - Memory leak
  - Privilege missing
  - Function pointer mismatch
  - Use of incorrect parameter
  - Unreachable code

Change-Id: I7f503c116a3641a1c03b5ca883decad1813bdae7
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
packaging/dbus-inm-manager.conf
src/inm-arping.c
src/inm-dns-lookup.c
src/inm-reacher.c

index b583b813632a58b27cec6cc165df67f24807a11f..252999a23f50e369962e0cf040dc9f687fdc3f79 100644 (file)
                <deny send_destination="net.inm_manager"/>
                <allow send_destination="net.inm_manager" send_interface="org.freedesktop.DBus.Peer" send_member="Ping" />
                <allow send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetWifiModuleState" />
-               <allow send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetGatewayState" />
-               <allow send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetDnsState" />
                <allow send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetCellularState" />
                <allow send_destination="net.inm_manager" send_interface="net.inm_manager.wifi" send_member="GetScanState" />
 
                <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetConnections" privilege="http://tizen.org/privilege/network.get" />
+               <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetGatewayState" privilege="http://tizen.org/privilege/network.get" />
+               <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetDnsState" privilege="http://tizen.org/privilege/network.get" />
                <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetEthernetCableState" privilege="http://tizen.org/privilege/network.get" />
                <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetIpConflictDetect" privilege="http://tizen.org/privilege/network.get" />
                <check send_destination="net.inm_manager" send_interface="net.inm_manager" send_member="GetIpConflictState" privilege="http://tizen.org/privilege/network.get" />
index 6f71f473b2bb0dd3d28477100a6b8645f16280bd..6443d12c06033834c09f23a9a21d1800f363349a 100644 (file)
@@ -223,7 +223,7 @@ static void __get_gateway_check_interval_value(void)
        else
                g_p_arping_mon->arping_interval = interval;
 
-       return;
+       g_key_file_free(keyfile);
 }
 
 static inline void __init_arping_data(arping_data_s *arping_data)
index e762e4bd8f6e65a690253f50dc2191e2812932e4..a950338aa6ab19b9a22aa03d05bc5a893d2d9452 100644 (file)
@@ -375,10 +375,12 @@ static int __get_dns_check_interval_value(void)
 
        interval = g_key_file_get_integer(keyfile, "General", "DnsCheckInterval", NULL);
 
+       g_key_file_free(keyfile);
+
        if (interval < DNS_INTERVAL_MIN)
                return DNS_INTERVAL_MIN;
-       else
-               return interval;
+
+       return interval;
 }
 
 static void __ares_host_cb(void *arg, int status, int timeouts, struct hostent *p_host)
@@ -436,7 +438,7 @@ static void __default_ares_host_cb(void *arg, int status, int timeouts, struct h
 
        g_default_dns_lookup_data->is_lookup_finished = TRUE;
 
-       REMOVE_G_SOURCE(g_default_dns_lookup_data->channel);
+       REMOVE_G_SOURCE(g_default_dns_lookup_data->ares_timer_source_id);
 
        __INM_FUNC_EXIT__;
 }
@@ -467,7 +469,7 @@ static gboolean __default_dns_lookup_timer_cb(gpointer user_data)
        return FALSE;
 }
 
-static gboolean  __dns_state_monitor(void)
+static gboolean  __dns_state_monitor(void *user_data)
 {
        if (g_default_dns_lookup_data) {
                ares_gethostbyname(g_default_dns_lookup_data->channel,
@@ -496,7 +498,7 @@ int inm_default_dns_state_monitor(void)
 
        interval = __get_dns_check_interval_value();
 
-       __dns_state_monitor();
+       __dns_state_monitor(NULL);
 
        g_default_dns_lookup_data->ares_timer_source_id =
                        g_timeout_add(interval,
index 328d1b57af59694d265c52912ef6fdd4f1338f85..24d185500f8dbc94dd4ce52bb5dcc980eb7dbca1 100644 (file)
@@ -646,10 +646,14 @@ static char * __get_reacher_online_check_url(void)
 
        url =  g_key_file_get_string(keyfile, "General", "OnlineCheckUrl", NULL);
 
-       if (g_strcmp0(url, ""))
-               return DEFAULT_URL;
-       else
+       g_key_file_free(keyfile);
+
+       if (g_strcmp0(url, "") == 0) {
+               g_free(url);
+               return NULL;
+       } else {
                return url;
+       }
 }
 
 int inm_reacher_init(void)
@@ -877,7 +881,10 @@ int inm_reacher_start_online_check(void)
                goto out;
        }
 
-       rv = curl_easy_setopt(curl_handle, CURLOPT_URL, url);
+       if (url)
+               rv = curl_easy_setopt(curl_handle, CURLOPT_URL, url);
+       else
+               rv = curl_easy_setopt(curl_handle, CURLOPT_URL, DEFAULT_URL);
 
        if (rv != CURLE_OK)
        {
@@ -956,6 +963,8 @@ out:
        if (result < 0)
                _curl_state_cleanup();
 
+       g_free(url);
+
        return result;
 }