Add smack-privilege checkers to AppInstallHelperExt 33/229533/25
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 23 Apr 2020 08:24:07 +0000 (10:24 +0200)
committerZofia Abramowska <z.abramowska@samsung.com>
Wed, 29 Apr 2020 14:09:15 +0000 (14:09 +0000)
Change-Id: I814dc54983ebcd4c42db8e8fbca36df71e732f54

src/security-manager-tests/common/app_install_helper_ext.cpp
src/security-manager-tests/common/app_install_helper_ext.h

index 2f4e0ee0e0f8d721adfb87549949fbb51b50bc87..cec5434caacf5dad6e1cb5f1ba799f57de8589c8 100644 (file)
@@ -140,6 +140,27 @@ void AppInstallHelperExt::checkPrivilegeGroups(const PrivilegeVector &allowedPri
     checkGids(allowed_gids);
 }
 
+void AppInstallHelperExt:: checkSmackPrivileges(const PrivilegeVector &allowedPrivs,
+                                                const PrivilegeVector &deniedPrivs) const
+{
+    auto& smackPrivilegeRules = PolicyConfiguration::getSmackPrivRulesMap();
+
+    auto getPrivilegeRules = [&](const PrivilegeVector &privs) {
+        std::vector<AccessRequest> rules;
+
+        for (auto &priv : privs) {
+            auto it = smackPrivilegeRules.find(priv);
+            RUNNER_ASSERT_MSG(it != smackPrivilegeRules.end(), priv << " is not a smack privilege");
+
+            rules.insert(rules.end(), it->second.begin(), it->second.end());
+        }
+        return rules;
+    };
+
+    checkSmackAccesses(getPrivilegeRules(allowedPrivs));
+    checkSmackAccesses(getPrivilegeRules(deniedPrivs), false);
+}
+
 void AppInstallHelperExt::checkAfterInstall() const
 {
     static const std::vector<AccessRequest> staticRules[] =
index 00c5c4969fabc3e357d4c4d7d387a42ee0b10428..5b89d11190e5bb372ed2e98e8b55244979d0cc4e 100644 (file)
@@ -33,6 +33,8 @@ public:
                          const PrivilegeVector &deniedPrivs) const;
     void checkDeniedPrivileges(const PrivilegeVector &deniedPrivs) const;
     void checkPrivilegeGroups(const PrivilegeVector &allowedPrivs) const;
+    void checkSmackPrivileges(const PrivilegeVector &allowedPrivs,
+                              const PrivilegeVector &deniedPrivs = {}) const;
     void checkAfterInstall() const;
     void checkAfterUninstall(bool removePkg = true) const;