Don't harcode smack labels 92/90592/2
authorZbigniew Jasinski <z.jasinski@samsung.com>
Fri, 30 Sep 2016 15:15:31 +0000 (17:15 +0200)
committerTomasz Swierczek <t.swierczek@samsung.com>
Tue, 11 Oct 2016 11:11:47 +0000 (13:11 +0200)
The module is adjusted to new, pkg-id based Smack label creation for applications

Change-Id: I179041fcc5c1828cda6f5a35df87685199a70417
Signed-off-by: Zbigniew Jasinski <z.jasinski@samsung.com>
src/agent/notification-daemon/AskUserTalker.cpp
test/tools/main.cpp

index 3823bc6..45d16ab 100644 (file)
@@ -51,13 +51,6 @@ inline void throwOnSecurityPrivilegeError(std::string err, int ret)
         throw Exception(err + " : " + std::to_string(ret));
 }
 
-inline const char *dropPrefix(const char* app)
-{
-    constexpr char prefix[] = "User::App::";
-    constexpr size_t prefixSize = sizeof(prefix) - 1;
-    return strncmp(app, prefix, prefixSize) ? app : app + prefixSize;
-}
-
 void setSecurityLevel(const std::string &app, const std::string &perm, const std::string &level)
 {
     int ret;
@@ -110,8 +103,15 @@ void setSecurityLevel(const std::string &app, const std::string &perm, const std
             policyEntries.push_back(std::unique_ptr<policy_entry,
                 decltype(security_manager_policy_entry_free)*>(policyEntry, security_manager_policy_entry_free));
 
-            ret = security_manager_policy_entry_set_application(policyEntry,
-                                                        dropPrefix(app.c_str()));
+            char *pkg_name = nullptr;
+            char *app_name = nullptr;
+
+            ret = security_manager_identify_app_from_cynara_client(app.c_str(), &pkg_name, &app_name);
+            std::unique_ptr<char, decltype(free)*> pkg_name_p(pkg_name, free);
+            std::unique_ptr<char, decltype(free)*> app_name_p(app_name, free);
+            throwOnSecurityPrivilegeError("security_manager_identify_app_from_cynara_client", ret);
+
+            ret = security_manager_policy_entry_set_application(policyEntry, app_name);
             throwOnSecurityPrivilegeError("security_manager_policy_entry_set_application", ret);
 
             ret = security_manager_policy_entry_set_privilege(policyEntry, privilege_name);
index c285ea6..1b92094 100644 (file)
@@ -44,7 +44,8 @@ int main(int argc, char **argv)
 {
     int ret;
 
-    std::string client = "User::App::org.tizen.task-mgr";
+    // below app has this privilege for any user in MANIFEST bucket and it is a privacy privilege
+    std::string client = "User::Pkg::org.tizen.task-mgr";
     std::string user = "5001";
     std::string privilege = "http://tizen.org/privilege/appmanager.kill";
     std::string bucket = "";