BuildRequires: pkgconfig(libtbm)
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(cynara-client)
+BuildRequires: pkgconfig(cynara-creds-self)
BuildRequires: pkgconfig(appsvc)
BuildRequires: pkgconfig(ecore-wl2)
BuildRequires: pkgconfig(wayland-tbm-client)
#include <pkgmgr-info.h>
#include <system_info.h>
#include <cynara-client.h>
+#include <cynara-creds-self.h>
#include <fcntl.h>
#include <widget_errno.h>
#define SMACK_LABEL_LEN 255
static int __check_privilege(const char *privilege)
{
- cynara *p_cynara;
-
- int fd = 0;
+ cynara *p_cynara = NULL;
int ret = 0;
-
- char subject_label[SMACK_LABEL_LEN +1] = "";
+ char *cynara_client = NULL;
char uid[10] = {0, };
char *client_session = "";
if (ret != CYNARA_API_SUCCESS)
return -1;
- fd = open("/proc/self/attr/current", O_RDONLY);
- if (fd < 0) {
- ret = -1;
- goto ERROR;
- }
+ ret = cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &cynara_client);
+ if (ret != CYNARA_API_SUCCESS) {
+ LOGD("failed to get cynara client : %d", ret);
- ret = read(fd, subject_label, SMACK_LABEL_LEN);
- if (ret < 0) {
- LOGE("read is failed");/* LCOV_EXCL_LINE */
- close(fd);/* LCOV_EXCL_LINE */
+ ret = -1;
goto ERROR;
}
- close(fd);
snprintf(uid, 10, "%d", getuid());
- ret = cynara_check(p_cynara, subject_label, client_session, uid, privilege);
+ ret = cynara_check(p_cynara, cynara_client, client_session, uid, privilege);
if (ret != CYNARA_API_ACCESS_ALLOWED) {
ret = -1;
goto ERROR;
ERROR:
if (p_cynara)
cynara_finish(p_cynara);
+
+ if (cynara_client)
+ free(cynara_client);
+
return ret;
}