#include <cynara-client.h>
#include <cynara-error.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include "sticker_consumer.h"
#include "sticker_consumer_main.h"
static int _check_privilege(const char *uid, const char *privilege)
{
int ret;
- FILE *fp = NULL;
- char label_path[1024] = "/proc/self/attr/current";
- char smack_label[1024] = {'\0',};
+ char *client_identification = NULL;
if (!p_cynara) {
return -1;
}
- fp = fopen(label_path, "r");
- if (fp != NULL) {
- ret = fread(smack_label, 1, sizeof(smack_label), fp);
- if (ret <= 0)
- LOGE("Failed to fread");
-
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client_identification) != CYNARA_API_SUCCESS) {
+ LOGW("Failed to get client");
+ return -1;
}
pid_t pid = getpid();
char *session = cynara_session_from_pid(pid);
- ret = cynara_check(p_cynara, smack_label, session, uid, privilege);
- if (session)
+ ret = cynara_check(p_cynara, client_identification, session, uid, privilege);
+
+ if (session) {
free(session);
+ session = NULL;
+ }
+
+ if (client_identification) {
+ free(client_identification);
+ client_identification = NULL;
+ }
if (ret != CYNARA_API_ACCESS_ALLOWED) {
LOGE("Access denied. The result of cynara_check() : %d.", ret); //LCOV_EXCL_LINE
}
static int _sticker_check_privilege() {
- char uid[16];
+ char uid[16] = {0,};
int ret = STICKER_ERROR_NONE;
if (_cynara_initialize() != CYNARA_API_SUCCESS)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(cynara-client)
BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(cynara-creds-self)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(gio-2.0)