<smack request="security-server::api-privilege-by-pid" type="w"/>
<smack request="vasum::manage" type="rw"/>
<smack request="sys-assert::core" type="rwxat"/>
- <smack request="system::vconf" type="rwxl"/>
- <smack request="system::vconf_system" type="rl"/>
- <smack request="system::vconf_inhouse" type="rl"/>
- <smack request="system::vconf_multimedia" type="rl"/>
<smack request="device::app_logging" type="rw"/>
<smack request="device::sys_logging" type="rw"/>
<smack request="deviced::display" type="rw"/>
<smack request="msg-service" type="rwx"/>
<smack request="msg-service::db" type="r"/>
<smack request="msg-service::read" type="rw"/>
- <smack request="msg-service::vconf" type="r"/>
- <smack request="tizen::vconf::message" type="r"/>
<smack request="privilege::tizen::message.write" type="rw"/>
<smack request="privilege::tizen::message.read" type="rw"/>
<smack request="msg-service::write" type="rw"/>
<smack request="msg-service::read" type="rw"/>
<smack request="app-svc::jump" type="x"/>
- <smack request="tizen::vconf::public::r::platform::rw" type="rlw"/>
+ <smack request="tizen::vconf::message" type="r"/>
+ <smack request="tizen::vconf::setting::admin" type="rl"/>
+ <smack request="tizen::vconf::volume::set" type="rl"/>
</request>
</define>
<request>
#include <types_internal.h>
#include "peer_creds.h"
-std::string ctx::peer_creds::get_smack_label(GDBusConnection *connection, const char *unique_name)
+bool ctx::peer_creds::get(GDBusConnection *connection, const char *unique_name, std::string &smack_label, pid_t &pid)
{
gchar *client = NULL;
int err = cynara_creds_gdbus_get_client(connection, unique_name, CLIENT_METHOD_SMACK, &client);
- IF_FAIL_RETURN_TAG(err == CYNARA_API_SUCCESS, "", _E, "cynara_creds_gdbus_get_client() failed");
+ IF_FAIL_RETURN_TAG(err == CYNARA_API_SUCCESS, false, _E, "cynara_creds_gdbus_get_client() failed");
- std::string ret = client;
+ smack_label = client;
g_free(client);
- return ret;
-}
-pid_t ctx::peer_creds::get_pid(GDBusConnection *connection, const char *unique_name)
-{
- pid_t pid = -1;
- int err = cynara_creds_gdbus_get_pid(connection, unique_name, &pid);
- IF_FAIL_RETURN_TAG(err == CYNARA_API_SUCCESS, -1, _E, "cynara_creds_gdbus_get_pid() failed");
+ err = cynara_creds_gdbus_get_pid(connection, unique_name, &pid);
+ IF_FAIL_RETURN_TAG(err == CYNARA_API_SUCCESS, false, _E, "cynara_creds_gdbus_get_pid() failed");
- return pid;
+ return true;
}
namespace ctx {
namespace peer_creds {
- std::string get_smack_label(GDBusConnection *connection, const char *unique_name);
- pid_t get_pid(GDBusConnection *connection, const char *unique_name);
+ bool get(GDBusConnection *connection, const char *unique_name, std::string &smack_label, pid_t &pid);
}
} /* namespace ctx */
return;
}
- std::string smack_label = ctx::peer_creds::get_smack_label(dbus_connection, sender);
- pid_t pid = ctx::peer_creds::get_pid(dbus_connection, sender);
- const char* zone = ctx::zone_util::get_name_by_pid(pid);
+ std::string smack_label;
+ pid_t pid;
- if (smack_label.empty() || !request->set_peer_creds(smack_label.c_str(), zone)) {
- g_dbus_method_invocation_return_value(invocation, g_variant_new("(iss)", ERR_OPERATION_FAILED, EMPTY_JSON_OBJECT, EMPTY_JSON_OBJECT));
+ if (ctx::peer_creds::get(dbus_connection, sender, smack_label, pid) &&
+ request->set_peer_creds(smack_label.c_str(), ctx::zone_util::get_name_by_pid(pid))) {
+ ctx::server::send_request(request);
return;
}
- ctx::server::send_request(request);
+ g_dbus_method_invocation_return_value(invocation, g_variant_new("(iss)", ERR_OPERATION_FAILED, EMPTY_JSON_OBJECT, EMPTY_JSON_OBJECT));
}
static void handle_method_call(GDBusConnection *conn, const gchar *sender,