CKM: AccessProvider2 takes owner id instead smack label. 72/46872/1
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Wed, 26 Aug 2015 13:28:28 +0000 (15:28 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Wed, 26 Aug 2015 13:35:16 +0000 (15:35 +0200)
Change-Id: I9d75c180c06336faca33459645b189a64dc287f2

src/ckm/access_provider2.cpp
src/ckm/access_provider2.h

index 018454f..31f67ba 100644 (file)
 
 #include <tests_common.h>
 
-AccessProvider::AccessProvider(const std::string &mySubject)
-  : m_mySubject(mySubject), m_inSwitchContext(false)
+namespace {
+
+std::string toSmackLabel(const std::string &ownerId) {
+    if (ownerId.empty())
+        return ownerId;
+
+    if (ownerId[0] == '/') {
+        return ownerId.substr(1, std::string::npos);
+    }
+
+    return "User::App::" + ownerId;
+}
+
+} // anonymous namespace
+
+AccessProvider::AccessProvider(const std::string &ownerId)
+  : m_mySubject(toSmackLabel(ownerId))
+  , m_inSwitchContext(false)
 {
     RUNNER_ASSERT_MSG(m_mySubject.size() > 0, "No smack label provided to AccessProvider!");
     allowJournaldLogs();
 }
 
-AccessProvider::AccessProvider(const std::string &mySubject, int uid, int gid)
-  : m_mySubject(mySubject), m_inSwitchContext(false)
+AccessProvider::AccessProvider(const std::string &ownerId, int uid, int gid)
+  : m_mySubject(toSmackLabel(ownerId))
+  , m_inSwitchContext(false)
 {
     RUNNER_ASSERT_MSG(m_mySubject.size() > 0, "No smack label provided to AccessProvider!");
     allowJournaldLogs();
index b7c714b..30631be 100644 (file)
@@ -28,8 +28,8 @@
 
 class AccessProvider {
 public:
-    explicit AccessProvider(const std::string &mySubject);
-    AccessProvider(const std::string &mySubject, int uid, int gid);
+    explicit AccessProvider(const std::string &ownerId);
+    AccessProvider(const std::string &ownerId, int uid, int gid);
     virtual ~AccessProvider() {}
 
     AccessProvider(const AccessProvider &second) = delete;