Add restriction for privilege smack mapping rules 74/226974/12
authorZofia Grzelewska <z.abramowska@samsung.com>
Fri, 28 Feb 2020 16:25:45 +0000 (17:25 +0100)
committerZofia Abramowska <z.abramowska@samsung.com>
Fri, 17 Apr 2020 10:27:26 +0000 (12:27 +0200)
Do not support rules, which are not based only on privilege or
application based labels.

Change-Id: Ib86cac1c8b362f8b4549148be96915a16e323e65

policy/privilege-smack.list
src/common/smack-rules.cpp

index f73816ac818daf94bfa6961f3bcf156cc13d475a..a95a151737a94e071ece8279ba256f6c20c67399 100644 (file)
 #   In such case 'priv-rules-default-template.smack' will be used.
 #
 # - lines starting with '#' or empty lines are ignored
+#
+# IMPORTANT NOTICE:
+# This mechanism is only for special cases. Rules provided in privilege template
+# will only be accepted, when they are between privilege label and application
+# based labels (e.g. application process label, application read-only path label).
+# Other rules will be ignored.
 
 http://tizen.org/privilege/internet System::Privilege::Internet default
index d7963d83036d555a5c3f2c604b9372fc6ae869b1..469f69e341e5598804e9e68990f0c26c13250938 100644 (file)
@@ -209,6 +209,12 @@ void SmackRules::addFromPrivTemplate(
         std::string object = rule[1];
         std::string permissions = rule[2];
 
+        if (subject[0] != '~' || object[0] != '~') {
+            LogWarning("Unsupported rule <"
+                     << subject << " " << object << " " << permissions
+                     << "> detected. Ignoring");
+        }
+
         strReplace(subject, SMACK_PROCESS_LABEL_TEMPLATE, appProcessLabel);
         strReplace(subject, SMACK_PRIVILEGE_LABEL_TEMPLATE, privilegeLabel);
         strReplace(object,  SMACK_PROCESS_LABEL_TEMPLATE, appProcessLabel);