From: saerome.kim Date: Thu, 31 Oct 2019 06:06:01 +0000 (+0900) Subject: Fix a crash issue X-Git-Tag: submit/tizen_5.5/20191111.122639~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9291d993a3acfbdda10d2743bf424e37bf7d4af;p=platform%2Fcore%2Fapi%2Fuser-awareness.git Fix a crash issue - Problem: crash happens when executing UTC. - Cause: A memory allocation of the device is freed when ua_device_destry() called, but linked list is not removed. - Solution: Remove the link in the list when ua_device_destroy() called. Change-Id: I3005386a57f9ebaf1843676a4f0ffe6b2d2497c7 Signed-off-by: saerome.kim --- diff --git a/src/user-awareness-users.c b/src/user-awareness-users.c index ae9c42d..e0a9f4b 100644 --- a/src/user-awareness-users.c +++ b/src/user-awareness-users.c @@ -28,6 +28,20 @@ extern GSList *ua_devices_list; extern GSList *ua_devices_user_list; extern ua_callback_s user_callbacks[UA_USER_EVENT_MAX]; +static void __ua_check_and_free_user_info_from_list(const char *account) +{ + ua_user_info_s *user_info = NULL; + + ret_if(NULL == account); + + user_info = _ua_get_user_from_list(account); + + if (user_info) { + ua_users_list = g_slist_remove(ua_users_list, user_info); + _ua_free_ua_user_info_t(user_info); + } +} + ua_user_info_s *_ua_get_user_from_list(const char *account) { GSList *l; @@ -760,7 +774,6 @@ int ua_user_set_name( UA_VALIDATE_INPUT_PARAMETER(handle); UA_VALIDATE_INPUT_PARAMETER(name); - retv_if(user->isadded, UA_ERROR_INVALID_PARAMETER); retv_if((strlen(name) > UAM_USER_NAME_MAX_STRING_LEN), UA_ERROR_INVALID_PARAMETER); if (user->name) @@ -822,7 +835,7 @@ int ua_user_destroy(ua_user_h user_handle) /* LCOV_EXCL_STOP */ } - _ua_free_ua_user_info_t(user); + __ua_check_and_free_user_info_from_list(user->account); FUNC_EXIT; return UA_ERROR_NONE;