diff options
author | Lokesh <l.kasana@samsung.com> | 2019-08-20 11:24:39 +0530 |
---|---|---|
committer | saerome.kim <saerome.kim@samsung.com> | 2019-08-20 17:28:31 +0900 |
commit | eb7740fb6d9b24b29ed1c71a89747b4d2ac0b9a6 (patch) | |
tree | 32f997fb1656d106713eba409e43319851acc1d8 | |
parent | 5a92d54ad11b3364e640534148286720fcc9d8dd (diff) | |
download | user-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.h | 6 | ||||
-rw-r--r-- | packaging/capi-network-ua.spec | 2 | ||||
-rw-r--r-- | src/user-awareness-event-handler.c | 27 | ||||
-rw-r--r-- | src/user-awareness-service.c | 4 | ||||
-rw-r--r-- | src/user-awareness-users.c | 7 | ||||
-rw-r--r-- | test/uat-devices.c | 10 |
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 }, |