From: Sangyoon Jang Date: Wed, 4 Nov 2020 07:19:45 +0000 (+0900) Subject: Aborting installation when failed to get admin user info X-Git-Tag: accepted/tizen/6.0/unified/20201201.091045~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=72186d04a5ee0877575a45c90f679360f9d0b020;p=platform%2Fcore%2Fappfw%2Fapp-installers.git Aborting installation when failed to get admin user info Change-Id: Id1317cca5055590f708b00170c2b62e6c46bc4f8 Signed-off-by: Sangyoon Jang --- diff --git a/src/common/pkgmgr_interface.cc b/src/common/pkgmgr_interface.cc index 0267569..ed46880 100644 --- a/src/common/pkgmgr_interface.cc +++ b/src/common/pkgmgr_interface.cc @@ -104,8 +104,15 @@ int PkgMgrInterface::InitInternal(int argc, char** argv) { return -1; } + boost::optional is_admin_user = + IsAdminUser(pkgmgr_installer_get_uid(pi_)); + if (!is_admin_user) { + LOG(ERROR) << "Cannot get admin user info. Aborting."; + return -1; + } + // Set target uid as tizenglobalapp if admin user's request - if (IsAdminUser(pkgmgr_installer_get_uid(pi_))) { + if (*is_admin_user) { result = pkgmgr_installer_set_uid(pi_, kGlobalUserUid); if (result) { LOG(ERROR) << "Failed to set global uid"; diff --git a/src/common/utils/user_util.cc b/src/common/utils/user_util.cc index 47858ef..da41147 100644 --- a/src/common/utils/user_util.cc +++ b/src/common/utils/user_util.cc @@ -94,7 +94,7 @@ UserList GetUserList() { return list; } -bool IsAdminUser(uid_t uid) { +boost::optional IsAdminUser(uid_t uid) { GumUser* guser; int count = 0; bool is_offline = getuid() == 0; @@ -112,7 +112,7 @@ bool IsAdminUser(uid_t uid) { usleep(kRetryDelay); } while (count < kRetryMax); if (!guser) - return false; + return {}; GumUserType ut; g_object_get(G_OBJECT(guser), "usertype", &ut, NULL); bool is_admin; diff --git a/src/common/utils/user_util.h b/src/common/utils/user_util.h index bae9392..051c0af 100644 --- a/src/common/utils/user_util.h +++ b/src/common/utils/user_util.h @@ -21,7 +21,7 @@ namespace common_installer { typedef std::vector> UserList; UserList GetUserList(); -bool IsAdminUser(uid_t uid); +boost::optional IsAdminUser(uid_t uid); boost::optional GetGidByUid(uid_t uid); std::string GetGroupNameByGid(gid_t gid); std::string GetUsernameByUid(uid_t user);