BuildRequires: pkgconfig(hal-api-power)
BuildRequires: pkgconfig(cynara-client)
BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(cynara-creds-self)
%description
PASS (Power-Aware System Service)
#include <cynara-client.h>
#include <cynara-session.h>
+#include <cynara-creds-self.h>
#include <util/log.h>
#include <util/common.h>
int privilege_get_privilege_supported(const char *privilege_name, bool *privilege_supported)
{
cynara *cynara = NULL;
- FILE *fp = NULL;
char uid[16];
char *session = NULL;
- char smack_label[BUFF_MAX] = {0, };
+ char *smack_label = NULL;
int ret;
if (!privilege_supported)
return -EPERM;
}
- fp = fopen("/proc/self/attr/current", "r");
- if (fp != NULL) {
- int ch = 0;
- int idx = 0;
- while (EOF != (ch = fgetc(fp))) {
- smack_label[idx] = ch;
- idx++;
- }
- fclose(fp);
+ if (cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &smack_label) != CYNARA_API_SUCCESS) {
+ _E("Failed to get smack label by cynara_creds_self_get_client()");
+ *privilege_supported = false;
+ return -EPERM;
}
pid_t pid = getpid();
free(session);
if (cynara)
cynara_finish(cynara);
+ if (smack_label)
+ free(smack_label);
if (ret != CYNARA_API_ACCESS_ALLOWED) {
_W("'%s' privilege is not supported on %s",
privilege_name, program_invocation_name);