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;
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);
{
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 = "";