INCLUDE(FindPkgConfig)
pkg_check_modules(pkgs REQUIRED
aul buxton2 capi-appfw-app-control capi-appfw-app-manager capi-base-common capi-media-audio-io capi-media-sound-manager ecore-wl2
- capi-system-info cynara-client cynara-session db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf gmock bundle rpc-port
+ capi-system-info cynara-client cynara-session cynara-creds-self db-util dlog ecore glib-2.0 json-glib-1.0 libgum libtzplatform-config libxml-2.0 sqlite3 vconf gmock bundle rpc-port
)
#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include <Ecore_Wl2.h>
#include <stdlib.h>
#include <stdio.h>
static int __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; //LCOV_EXCL_LINE
+ return false;
}
- fp = fopen(label_path, "r");
- if (fp != NULL) {
- if (0 >= fread(smack_label, 1, sizeof(smack_label), fp))
- SLOG(LOG_ERROR, TAG_VCC, "[ERROR] fail to fread"); //LCOV_EXCL_LINE
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ SLOG(LOG_ERROR, TAG_VCC, "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);
- SLOG(LOG_DEBUG, TAG_VCC, "[Client]cynara_check returned %d(%s)", ret, (CYNARA_API_ACCESS_ALLOWED == ret) ? "Allowed" : "Denied");
- FREE(session);
+ session = cynara_session_from_pid(getpid());
+ ret = cynara_check(p_cynara, client_identification, session, uid, privilege);
- if (ret != CYNARA_API_ACCESS_ALLOWED)
- return false; //LCOV_EXCL_LINE
+ free(session);
+ session = NULL;
+ free(client_identification);
+ client_identification = NULL;
+
+ if (ret != CYNARA_API_ACCESS_ALLOWED) {
+ SLOG(LOG_DEBUG, TAG_VCC, "[Client]cynara_check returned %d(Denied)", ret);
+ return false;
+ }
return true;
}
#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include <pthread.h>
#include <math.h>
static int __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) {
- SLOG(LOG_ERROR, TAG_VCM, "[ERROR] p_cynara is NULL");
return false;
}
- fp = fopen(label_path, "r");
- if (fp != NULL) {
- if (fread(smack_label, 1, sizeof(smack_label), fp) <= 0)
- SLOG(LOG_ERROR, TAG_VCM, "[ERROR] fail to fread");
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ SLOG(LOG_ERROR, TAG_VCM, "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);
+ 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) {
- SLOG(LOG_INFO, TAG_VCM, "[Client]cynara_check returned %d(Denied), p_cynara(%p), label(%s), session(%s), uid(%s), priv(%s)", ret, p_cynara, smack_label, session, uid, privilege);
+ SLOG(LOG_DEBUG, TAG_VCM, "[Client]cynara_check returned %d(Denied)", ret);
return false;
}
-
return true;
}
#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include <libintl.h>
#include <stdlib.h>
#include <system_info.h>
static int __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 (0 >= fread(smack_label, 1, sizeof(smack_label), fp))
- SLOG(LOG_ERROR, TAG_VCCMD, "[ERROR] fail to fread");
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ SLOG(LOG_ERROR, TAG_VCCMD, "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);
- SLOG(LOG_DEBUG, TAG_VCCMD, "[Client]cynara_check returned %d(%s)", ret, (CYNARA_API_ACCESS_ALLOWED == ret) ? "Allowed" : "Denied");
- if (session)
- free(session);
+ session = cynara_session_from_pid(getpid());
+ ret = cynara_check(p_cynara, client_identification, session, uid, privilege);
- if (ret != CYNARA_API_ACCESS_ALLOWED)
+ free(session);
+ session = NULL;
+ free(client_identification);
+ client_identification = NULL;
+
+ if (ret != CYNARA_API_ACCESS_ALLOWED) {
+ SLOG(LOG_DEBUG, TAG_VCCMD, "[Client]cynara_check returned %d(Denied)", ret);
return false;
+ }
return true;
}
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(cynara-client)
BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(cynara-creds-self)
BuildRequires: pkgconfig(db-util)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(ecore)
#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include <system_info.h>
#include "vcd_tidl.h"
#include "vcd_main.h"
static int __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 (0 >= fread(smack_label, 1, sizeof(smack_label), fp))
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] fail to fread");
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ SLOG(LOG_ERROR, TAG_VCD, "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);
- SLOG(LOG_INFO, TAG_VCD, "[Client]cynara_check returned %d(%s)", ret, (CYNARA_API_ACCESS_ALLOWED == ret) ? "Allowed" : "Denied");
- if (session)
- free(session);
+ session = cynara_session_from_pid(getpid());
+ ret = cynara_check(p_cynara, client_identification, session, uid, privilege);
- if (ret != CYNARA_API_ACCESS_ALLOWED)
+ free(session);
+ session = NULL;
+ free(client_identification);
+ client_identification = NULL;
+
+ if (ret != CYNARA_API_ACCESS_ALLOWED) {
+ SLOG(LOG_DEBUG, TAG_VCD, "[Client]cynara_check returned %d(Denied)", ret);
return false;
+ }
return true;
}
--wrap=cynara_initialize,\
--wrap=cynara_finish,\
--wrap=cynara_session_from_pid,\
+--wrap=cynara_creds_self_get_client,\
--wrap=cynara_check")
INSTALL(FILES ${CMAKE_SOURCE_DIR}/tests/${PKGNAME}.xml DESTINATION ${TZ_SYS_RO_PACKAGES})
{
return strdup("session");
}
+
+EXPORT_API int __wrap_cynara_creds_self_get_client(enum cynara_client_creds method, char **client)
+{
+ return 0;
+}
\ No newline at end of file
#include <sys/types.h>
#include <unistd.h>
+#include <cynara-creds-self.h>
#ifdef __cplusplus
extern "C" {
const char* privilege);
char *__wrap_cynara_session_from_pid(pid_t pid);
+int __wrap_cynara_creds_self_get_client(enum cynara_client_creds method, char **client);
#ifdef __cplusplus
}