From 81d8048a13dbfec77960f863adc768e1d533d167 Mon Sep 17 00:00:00 2001 From: Kichan Kwon Date: Mon, 29 Aug 2016 14:58:22 +0900 Subject: [PATCH] heart : multi-user logging : use old user list when updating user list is failed - gumd can return fail if other package locks user list - If resourced doesn't have existing user list, return fail Change-Id: I0cf7529e531da716bfd2eee9cf8786d74797f430 Signed-off-by: Kichan Kwon --- src/common/userinfo-list.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/common/userinfo-list.c b/src/common/userinfo-list.c index 27e582f..c6e0e51 100644 --- a/src/common/userinfo-list.c +++ b/src/common/userinfo-list.c @@ -38,8 +38,8 @@ resourced_ret_c get_all_users_info(GHashTable **table) GumUserList *iter = NULL; GumUser *user = NULL; gchar **query; - int *uid; - char *home_dir; + gint *uid = NULL; + gchar *home_dir = NULL; /* Get user data by using libgum */ gus = gum_user_service_create_sync(TRUE); @@ -51,19 +51,21 @@ resourced_ret_c get_all_users_info(GHashTable **table) query = g_strsplit("admin,normal", ",", -1); users = gum_user_service_get_user_list_sync(gus, (const gchar *const *)query); - - g_free(query[0]); - g_free(query[1]); + g_strfreev(query); if (!users) { - _E("Fail to get gum user list"); - g_object_unref(gus); - return RESOURCED_ERROR_FAIL; + if (!(*table)) { + _E("Fail to get gum user list"); + g_object_unref(gus); + return RESOURCED_ERROR_FAIL; + } + _D("Fail to get gum user list. Use existing user list."); + return RESOURCED_ERROR_NONE; } /* Remove old list */ if (*table) - g_hash_table_remove_all(*table); + g_hash_table_destroy(*table); /* Initialize user table */ *table = g_hash_table_new_full( @@ -83,7 +85,7 @@ resourced_ret_c get_all_users_info(GHashTable **table) iter = users; for (; iter != NULL; iter = g_list_next(iter)) { user = (GumUser*) iter->data; - uid = (int*)malloc(sizeof(int)); + uid = (gint*)malloc(sizeof(gint)); g_object_get(G_OBJECT(user), "uid", uid, NULL); g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL); -- 2.7.4