SET(service "ui")
SET(submodule "inputmethod")
SET(remote_submodule "remote-input")
-SET(dependents "capi-base-common dlog evas eina ecore-imf ecore-wl2 libscl-core cynara-client cynara-session")
-SET(remote_dependents "capi-base-common dlog ecore-imf scim cynara-client cynara-session")
+SET(dependents "capi-base-common dlog evas eina ecore-imf ecore-wl2 libscl-core cynara-client cynara-session cynara-creds-self")
+SET(remote_dependents "capi-base-common dlog ecore-imf scim cynara-client cynara-session cynara-creds-self")
SET(LIBDIR ${LIB_INSTALL_DIR})
SET(Services
#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#ifdef LOG_TAG
#undef LOG_TAG
bool
check_privilege(const char *uid, const char *privilege)
{
- FILE *fp = NULL;
- char label_path[1024] = "/proc/self/attr/current";
- char smack_label[1024] = {'\0', };
+ char *client_identification = NULL;
+ char *session = NULL;
+ int ret;
if (!p_cynara) {
return false;
}
- fp = fopen(label_path, "r");
- if (fp != NULL) {
- if (fread(smack_label, 1, sizeof(smack_label) - 1, fp) <= 0)
- LOGW("Error : fread");
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ LOGW("Failed to get client.");
+ return false;
}
- pid_t pid = getpid();
- char *session = cynara_session_from_pid(pid);
- int ret = cynara_check(p_cynara, smack_label, session, uid, privilege);
- if (session)
- free(session);
+ session = cynara_session_from_pid(getpid());
+ ret = cynara_check(p_cynara, client_identification, session, uid, privilege);
+
+ free(session);
+ session = NULL;
+ free(client_identification);
+ client_identification= NULL;
if (ret != CYNARA_API_ACCESS_ALLOWED) {
LOGW("Access denied. The result of cynara_check() : %d.", ret);
}
return true;
}
-
BuildRequires: pkgconfig(isf)
BuildRequires: pkgconfig(cynara-client)
BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(cynara-creds-self)
BuildRequires: pkgconfig(gmock)
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
--wrap=cynara_initialize,\
--wrap=cynara_finish,\
--wrap=cynara_session_from_pid,\
---wrap=cynara_check")
+--wrap=cynara_check,\
+--wrap=cynara_creds_self_get_client")
INSTALL(TARGETS ${UNITTEST_INPUTMETHOD} DESTINATION /usr/bin)