Fix getPrivilegeProvider() implementation 95/119895/3
authorDariusz Michaluk <d.michaluk@samsung.com>
Mon, 20 Mar 2017 11:36:04 +0000 (12:36 +0100)
committerDariusz Michaluk <d.michaluk@samsung.com>
Mon, 20 Mar 2017 12:53:50 +0000 (13:53 +0100)
Check whether privilege is provided by a global application,
if it is not supplied by local application.

Change-Id: I630ae599df5f412447662ec505ddc2b8e817106b

src/common/service_impl.cpp

index 08d8cd3..4dc2727 100644 (file)
@@ -1698,6 +1698,11 @@ int ServiceImpl::getPrivilegeProvider(const std::string &privilege, uid_t uid,
     std::string appName, pkgName;
     try {
         m_privilegeDb.GetAppForAppDefinedPrivilege(std::make_pair(privilege, 0), uid, appName);
+
+        // check if privilege is provided by globally installed application
+        if (appName.empty())
+            m_privilegeDb.GetAppForAppDefinedPrivilege(std::make_pair(privilege, 0), getGlobalUserId(), appName);
+
         m_privilegeDb.GetAppPkgName(appName, pkgName);
         if (appName.empty() || pkgName.empty()) {
             LogWarning("Privilege " << privilege << " not found in database");