summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh <l.kasana@samsung.com>2019-08-20 11:24:39 +0530
committersaerome.kim <saerome.kim@samsung.com>2019-08-20 17:28:31 +0900
commiteb7740fb6d9b24b29ed1c71a89747b4d2ac0b9a6 (patch)
tree32f997fb1656d106713eba409e43319851acc1d8
parent5a92d54ad11b3364e640534148286720fcc9d8dd (diff)
downloaduser-awareness-eb7740fb6d9b24b29ed1c71a89747b4d2ac0b9a6.tar.gz
user-awareness-eb7740fb6d9b24b29ed1c71a89747b4d2ac0b9a6.tar.bz2
user-awareness-eb7740fb6d9b24b29ed1c71a89747b4d2ac0b9a6.zip
Fixed memory leak in ua_deinitialize()
g_slist_free_full() frees the memory used by each element's data and also of GSList. Whereas, ua_user_destroy() was not able to free when user->isadded flag is true. and the 'if (!u)' NULL check was incorrect. Change-Id: Ib69388d88a57c5ef26f01440c1ae6ed5bc80d1ef Signed-off-by: Lokesh <l.kasana@samsung.com>
-rw-r--r--include/user-awareness-private.h6
-rw-r--r--packaging/capi-network-ua.spec2
-rw-r--r--src/user-awareness-event-handler.c27
-rw-r--r--src/user-awareness-service.c4
-rw-r--r--src/user-awareness-users.c7
-rw-r--r--test/uat-devices.c10
6 files changed, 20 insertions, 36 deletions
diff --git a/include/user-awareness-private.h b/include/user-awareness-private.h
index 77b54b3..7e77c44 100644
--- a/include/user-awareness-private.h
+++ b/include/user-awareness-private.h
@@ -371,7 +371,7 @@ void __ua_free_ua_monitor_t(gpointer data);
* @pre
* @post
*/
-void _ua_free_ua_user_info_t(ua_user_info_s *user);
+void _ua_free_ua_user_info_t(gpointer data);
/**
* @brief Destroys a service handle.
@@ -383,7 +383,7 @@ void _ua_free_ua_user_info_t(ua_user_info_s *user);
* @pre
* @post
*/
-void _ua_free_ua_service_info_s(ua_service_info_s *service);
+void _ua_free_ua_service_info_s(gpointer data);
/**
* @brief Create a payload handle.
@@ -411,7 +411,7 @@ void _ua_create_ua_ble_payload_s(ua_ble_payload_s **payload_handle);
*
* @see _ua_create_ua_ble_payload_s()
*/
-void _ua_free_ua_ble_payload_s(ua_ble_payload_s *payload);
+void _ua_free_ua_ble_payload_s(gpointer data);
/**
* @brief Return payload handle from uam_ble_payload_s.
diff --git a/packaging/capi-network-ua.spec b/packaging/capi-network-ua.spec
index 549e8a9..8de7dc2 100644
--- a/packaging/capi-network-ua.spec
+++ b/packaging/capi-network-ua.spec
@@ -1,6 +1,6 @@
Name: capi-network-ua
Summary: User Awareness Framework CAPI
-Version: 0.6.6
+Version: 0.6.7
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
diff --git a/src/user-awareness-event-handler.c b/src/user-awareness-event-handler.c
index 01be060..4f39bc5 100644
--- a/src/user-awareness-event-handler.c
+++ b/src/user-awareness-event-handler.c
@@ -301,30 +301,9 @@ int ua_deinitialize(void)
retv_if(TRUE != is_initialized, UA_ERROR_NOT_INITIALIZED);
-
- GSList *l;
- ua_monitor_s *monitor = NULL;
- ua_user_info_s *u = NULL;
- ua_service_info_s *s = NULL;
-
- for (l = ua_services_list; l; l = g_slist_next(l)) {
- s = (ua_service_info_s *)l->data;
- _ua_free_ua_service_info_s(s);
- }
-
- for (l = ua_monitor_list; l; l = g_slist_next(l)) {
- monitor = (ua_monitor_s *)l->data;
- if (!monitor)
- ua_monitor_destroy(monitor);
- }
-
- for (l = ua_users_list; l; l = g_slist_next(l)) {
- u = (ua_user_info_s *)l->data;
-
- if (!u)
- ua_user_destroy(u);
- }
-
+ g_slist_free_full(ua_services_list, _ua_free_ua_service_info_s);
+ g_slist_free_full(ua_monitor_list, __ua_free_ua_monitor_t);
+ g_slist_free_full(ua_users_list, _ua_free_ua_user_info_t);
g_slist_free_full(ua_devices_db_list, _ua_free_ua_device_info_t);
diff --git a/src/user-awareness-service.c b/src/user-awareness-service.c
index deb505a..f62615c 100644
--- a/src/user-awareness-service.c
+++ b/src/user-awareness-service.c
@@ -41,9 +41,11 @@ static ua_mac_type_e __to_ua_mac_type(uam_tech_type_e tech_type)
}
}
-void _ua_free_ua_service_info_s(ua_service_info_s *service_info)
+void _ua_free_ua_service_info_s(gpointer data)
{
FUNC_ENTRY;
+ ua_service_info_s *service_info = data;
+
ret_if(NULL == service_info);
if (service_info->name)
diff --git a/src/user-awareness-users.c b/src/user-awareness-users.c
index 595c966..a10eb3f 100644
--- a/src/user-awareness-users.c
+++ b/src/user-awareness-users.c
@@ -75,9 +75,11 @@ void _ua_create_ua_ble_payload_s(ua_ble_payload_s **payload_handle)
FUNC_EXIT;
}
-void _ua_free_ua_ble_payload_s(ua_ble_payload_s *payload)
+void _ua_free_ua_ble_payload_s(gpointer data)
{
FUNC_ENTRY;
+ ua_ble_payload_s *payload = data;
+
ret_if(NULL == payload);
g_free(payload->duid);
@@ -195,9 +197,10 @@ void _ua_free_ua_device_info_t(gpointer data)
FUNC_EXIT;
}
-void _ua_free_ua_user_info_t(ua_user_info_s *user)
+void _ua_free_ua_user_info_t(gpointer data)
{
FUNC_ENTRY;
+ ua_user_info_s *user = data;
ret_if(NULL == user);
diff --git a/test/uat-devices.c b/test/uat-devices.c
index e48b8e1..21d6732 100644
--- a/test/uat-devices.c
+++ b/test/uat-devices.c
@@ -476,7 +476,7 @@ static void _update_device_info(void)
}
}
-#ifdef SUPPORT_EXACT_DUID
+#ifndef SUPPORT_STRING_DUID
static int _scan_payload_duid_str(
MManager *mm, struct menu_data *menu)
{
@@ -496,7 +496,7 @@ static int _scan_payload_duid_str(
return RET_SUCCESS;
}
-#endif /* SUPPORT_EXACT_DUID */
+#endif /* SUPPORT_STRING_DUID */
static int run_ua_device_create(
MManager *mm, struct menu_data *menu)
@@ -1103,10 +1103,10 @@ static struct menu_data menu_ua_device_set_payload_purpose[] = {
static struct menu_data menu_ua_device_set_payload_duid[] = {
{ "1", "DUID (Max. 17 bytes)",
-#ifdef SUPPORT_EXACT_DUID
- NULL, _scan_payload_duid_str, NULL },
-#else
+#ifdef SUPPORT_STRING_DUID
NULL, NULL, g_payload_duid_str },
+#else
+ NULL, _scan_payload_duid_str, NULL },
#endif
{ "2", "run", NULL,
run_ua_device_set_payload_duid, NULL },