summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsaerome.kim <saerome.kim@samsung.com>2019-10-31 15:06:01 +0900
committersaerome.kim <saerome.kim@samsung.com>2019-11-04 16:15:25 +0900
commite9291d993a3acfbdda10d2743bf424e37bf7d4af (patch)
tree2b13b08980c0be577c0d87b9d9d60d99249328cc /src
parent9e05b594cdf8d03ec8ee3d467c602b58f3e3dec7 (diff)
downloaduser-awareness-e9291d993a3acfbdda10d2743bf424e37bf7d4af.tar.gz
user-awareness-e9291d993a3acfbdda10d2743bf424e37bf7d4af.tar.bz2
user-awareness-e9291d993a3acfbdda10d2743bf424e37bf7d4af.zip
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 <saerome.kim@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/user-awareness-users.c17
1 files changed, 15 insertions, 2 deletions
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;