|
Packit |
3feee0 |
#include <stdio.h>
|
|
Packit |
3feee0 |
#include <stdio_ext.h>
|
|
Packit |
3feee0 |
#include <string.h>
|
|
Packit |
3feee0 |
#include <ctype.h>
|
|
Packit |
3feee0 |
#include <stddef.h>
|
|
Packit |
3feee0 |
#include <stdint.h>
|
|
Packit |
3feee0 |
#include <stdlib.h>
|
|
Packit |
3feee0 |
#include <limits.h>
|
|
Packit |
3feee0 |
#include <unistd.h>
|
|
Packit |
3feee0 |
#include <pthread.h>
|
|
Packit |
3feee0 |
#include <errno.h>
|
|
Packit |
3feee0 |
#include "policy.h"
|
|
Packit |
3feee0 |
#include "selinux_internal.h"
|
|
Packit |
3feee0 |
#include "get_default_type_internal.h"
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
#define SELINUXDEFAULT "targeted"
|
|
Packit |
3feee0 |
#define SELINUXTYPETAG "SELINUXTYPE="
|
|
Packit |
3feee0 |
#define SELINUXTAG "SELINUX="
|
|
Packit |
3feee0 |
#define SETLOCALDEFS "SETLOCALDEFS="
|
|
Packit |
3feee0 |
#define REQUIRESEUSERS "REQUIRESEUSERS="
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
/* Indices for file paths arrays. */
|
|
Packit |
3feee0 |
#define BINPOLICY 0
|
|
Packit |
3feee0 |
#define CONTEXTS_DIR 1
|
|
Packit |
3feee0 |
#define FILE_CONTEXTS 2
|
|
Packit |
3feee0 |
#define HOMEDIR_CONTEXTS 3
|
|
Packit |
3feee0 |
#define DEFAULT_CONTEXTS 4
|
|
Packit |
3feee0 |
#define USER_CONTEXTS 5
|
|
Packit |
3feee0 |
#define FAILSAFE_CONTEXT 6
|
|
Packit |
3feee0 |
#define DEFAULT_TYPE 7
|
|
Packit |
3feee0 |
#define BOOLEANS 8
|
|
Packit |
3feee0 |
#define MEDIA_CONTEXTS 9
|
|
Packit |
3feee0 |
#define REMOVABLE_CONTEXT 10
|
|
Packit |
3feee0 |
#define CUSTOMIZABLE_TYPES 11
|
|
Packit |
3feee0 |
#define USERS_DIR 12
|
|
Packit |
3feee0 |
#define SEUSERS 13
|
|
Packit |
3feee0 |
#define TRANSLATIONS 14
|
|
Packit |
3feee0 |
#define NETFILTER_CONTEXTS 15
|
|
Packit |
3feee0 |
#define FILE_CONTEXTS_HOMEDIR 16
|
|
Packit |
3feee0 |
#define FILE_CONTEXTS_LOCAL 17
|
|
Packit |
3feee0 |
#define SECURETTY_TYPES 18
|
|
Packit |
3feee0 |
#define X_CONTEXTS 19
|
|
Packit |
3feee0 |
#define COLORS 20
|
|
Packit |
3feee0 |
#define VIRTUAL_DOMAIN 21
|
|
Packit |
3feee0 |
#define VIRTUAL_IMAGE 22
|
|
Packit |
3feee0 |
#define FILE_CONTEXT_SUBS 23
|
|
Packit |
3feee0 |
#define SEPGSQL_CONTEXTS 24
|
|
Packit |
3feee0 |
#define FILE_CONTEXT_SUBS_DIST 25
|
|
Packit |
3feee0 |
#define LXC_CONTEXTS 26
|
|
Packit |
3feee0 |
#define BOOLEAN_SUBS 27
|
|
Packit |
3feee0 |
#define OPENSSH_CONTEXTS 28
|
|
Packit |
3feee0 |
#define SYSTEMD_CONTEXTS 29
|
|
Packit |
3feee0 |
#define SNAPPERD_CONTEXTS 30
|
|
Packit |
3feee0 |
#define OPENRC_CONTEXTS 31
|
|
Packit |
3feee0 |
#define NEL 32
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
/* Part of one-time lazy init */
|
|
Packit |
3feee0 |
static pthread_once_t once = PTHREAD_ONCE_INIT;
|
|
Packit |
3feee0 |
static void init_selinux_config(void);
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
/* New layout is relative to SELINUXDIR/policytype. */
|
|
Packit |
3feee0 |
static char *file_paths[NEL];
|
|
Packit |
3feee0 |
#define L1(l) L2(l)
|
|
Packit |
3feee0 |
#define L2(l)str##l
|
|
Packit |
3feee0 |
static const union file_path_suffixes_data {
|
|
Packit |
3feee0 |
struct {
|
|
Packit |
3feee0 |
#define S_(n, s) char L1(__LINE__)[sizeof(s)];
|
|
Packit |
3feee0 |
#include "file_path_suffixes.h"
|
|
Packit |
3feee0 |
#undef S_
|
|
Packit |
3feee0 |
};
|
|
Packit |
3feee0 |
char str[0];
|
|
Packit |
3feee0 |
} file_path_suffixes_data = {
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
#define S_(n, s) s,
|
|
Packit |
3feee0 |
#include "file_path_suffixes.h"
|
|
Packit |
3feee0 |
#undef S_
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
};
|
|
Packit |
3feee0 |
static const uint16_t file_path_suffixes_idx[NEL] = {
|
|
Packit |
3feee0 |
#define S_(n, s) [n] = offsetof(union file_path_suffixes_data, L1(__LINE__)),
|
|
Packit |
3feee0 |
#include "file_path_suffixes.h"
|
|
Packit |
3feee0 |
#undef S_
|
|
Packit |
3feee0 |
};
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
#undef L1
|
|
Packit |
3feee0 |
#undef L2
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
int selinux_getenforcemode(int *enforce)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
int ret = -1;
|
|
Packit |
3feee0 |
FILE *cfg = fopen(SELINUXCONFIG, "re");
|
|
Packit |
3feee0 |
if (cfg) {
|
|
Packit |
3feee0 |
char *buf;
|
|
Packit |
3feee0 |
int len = sizeof(SELINUXTAG) - 1;
|
|
Packit |
3feee0 |
buf = malloc(selinux_page_size);
|
|
Packit |
3feee0 |
if (!buf) {
|
|
Packit |
3feee0 |
fclose(cfg);
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
while (fgets_unlocked(buf, selinux_page_size, cfg)) {
|
|
Packit |
3feee0 |
if (strncmp(buf, SELINUXTAG, len))
|
|
Packit |
3feee0 |
continue;
|
|
Packit |
3feee0 |
if (!strncasecmp
|
|
Packit |
3feee0 |
(buf + len, "enforcing", sizeof("enforcing") - 1)) {
|
|
Packit |
3feee0 |
*enforce = 1;
|
|
Packit |
3feee0 |
ret = 0;
|
|
Packit |
3feee0 |
break;
|
|
Packit |
3feee0 |
} else
|
|
Packit |
3feee0 |
if (!strncasecmp
|
|
Packit |
3feee0 |
(buf + len, "permissive",
|
|
Packit |
3feee0 |
sizeof("permissive") - 1)) {
|
|
Packit |
3feee0 |
*enforce = 0;
|
|
Packit |
3feee0 |
ret = 0;
|
|
Packit |
3feee0 |
break;
|
|
Packit |
3feee0 |
} else
|
|
Packit |
3feee0 |
if (!strncasecmp
|
|
Packit |
3feee0 |
(buf + len, "disabled",
|
|
Packit |
3feee0 |
sizeof("disabled") - 1)) {
|
|
Packit |
3feee0 |
*enforce = -1;
|
|
Packit |
3feee0 |
ret = 0;
|
|
Packit |
3feee0 |
break;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
fclose(cfg);
|
|
Packit |
3feee0 |
free(buf);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
return ret;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_getenforcemode)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static char *selinux_policytype;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
int selinux_getpolicytype(char **type)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
__selinux_once(once, init_selinux_config);
|
|
Packit |
3feee0 |
if (!selinux_policytype)
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
*type = strdup(selinux_policytype);
|
|
Packit |
3feee0 |
return *type ? 0 : -1;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_getpolicytype)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static int setpolicytype(const char *type)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
free(selinux_policytype);
|
|
Packit |
3feee0 |
selinux_policytype = strdup(type);
|
|
Packit |
3feee0 |
return selinux_policytype ? 0 : -1;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static char *selinux_policyroot = NULL;
|
|
Packit |
3feee0 |
static const char *selinux_rootpath = SELINUXDIR;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static void init_selinux_config(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
int i, *intptr;
|
|
Packit |
3feee0 |
size_t line_len;
|
|
Packit |
3feee0 |
ssize_t len;
|
|
Packit |
3feee0 |
char *line_buf = NULL, *buf_p, *value, *type = NULL, *end;
|
|
Packit |
3feee0 |
FILE *fp;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (selinux_policyroot)
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
fp = fopen(SELINUXCONFIG, "re");
|
|
Packit |
3feee0 |
if (fp) {
|
|
Packit |
3feee0 |
__fsetlocking(fp, FSETLOCKING_BYCALLER);
|
|
Packit |
3feee0 |
while ((len = getline(&line_buf, &line_len, fp)) > 0) {
|
|
Packit |
3feee0 |
if (line_buf[len - 1] == '\n')
|
|
Packit |
3feee0 |
line_buf[len - 1] = 0;
|
|
Packit |
3feee0 |
buf_p = line_buf;
|
|
Packit |
3feee0 |
while (isspace(*buf_p))
|
|
Packit |
3feee0 |
buf_p++;
|
|
Packit |
3feee0 |
if (*buf_p == '#' || *buf_p == 0)
|
|
Packit |
3feee0 |
continue;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (!strncasecmp(buf_p, SELINUXTYPETAG,
|
|
Packit |
3feee0 |
sizeof(SELINUXTYPETAG) - 1)) {
|
|
Packit |
3feee0 |
type = strdup(buf_p + sizeof(SELINUXTYPETAG) - 1);
|
|
Packit |
3feee0 |
if (!type)
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
end = type + strlen(type) - 1;
|
|
Packit |
3feee0 |
while ((end > type) &&
|
|
Packit |
3feee0 |
(isspace(*end) || iscntrl(*end))) {
|
|
Packit |
3feee0 |
*end = 0;
|
|
Packit |
3feee0 |
end--;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
if (setpolicytype(type) != 0) {
|
|
Packit |
3feee0 |
free(type);
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
free(type);
|
|
Packit |
3feee0 |
continue;
|
|
Packit |
3feee0 |
} else if (!strncmp(buf_p, SETLOCALDEFS,
|
|
Packit |
3feee0 |
sizeof(SETLOCALDEFS) - 1)) {
|
|
Packit |
3feee0 |
value = buf_p + sizeof(SETLOCALDEFS) - 1;
|
|
Packit |
3feee0 |
intptr = &load_setlocaldefs;
|
|
Packit |
3feee0 |
} else if (!strncmp(buf_p, REQUIRESEUSERS,
|
|
Packit |
3feee0 |
sizeof(REQUIRESEUSERS) - 1)) {
|
|
Packit |
3feee0 |
value = buf_p + sizeof(REQUIRESEUSERS) - 1;
|
|
Packit |
3feee0 |
intptr = &require_seusers;
|
|
Packit |
3feee0 |
} else {
|
|
Packit |
3feee0 |
continue;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (isdigit(*value))
|
|
Packit |
3feee0 |
*intptr = atoi(value);
|
|
Packit |
3feee0 |
else if (strncasecmp(value, "true", sizeof("true") - 1))
|
|
Packit |
3feee0 |
*intptr = 1;
|
|
Packit |
3feee0 |
else if (strncasecmp
|
|
Packit |
3feee0 |
(value, "false", sizeof("false") - 1))
|
|
Packit |
3feee0 |
*intptr = 0;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
free(line_buf);
|
|
Packit |
3feee0 |
fclose(fp);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (!selinux_policytype && setpolicytype(SELINUXDEFAULT) != 0)
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (asprintf(&selinux_policyroot, "%s%s", SELINUXDIR, selinux_policytype) == -1)
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
for (i = 0; i < NEL; i++)
|
|
Packit |
3feee0 |
if (asprintf(&file_paths[i], "%s%s",
|
|
Packit |
3feee0 |
selinux_policyroot,
|
|
Packit |
3feee0 |
file_path_suffixes_data.str +
|
|
Packit |
3feee0 |
file_path_suffixes_idx[i])
|
|
Packit |
3feee0 |
== -1)
|
|
Packit |
3feee0 |
return;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static void fini_selinux_policyroot(void) __attribute__ ((destructor));
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static void fini_selinux_policyroot(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
int i;
|
|
Packit |
3feee0 |
free(selinux_policyroot);
|
|
Packit |
3feee0 |
selinux_policyroot = NULL;
|
|
Packit |
3feee0 |
for (i = 0; i < NEL; i++) {
|
|
Packit |
3feee0 |
free(file_paths[i]);
|
|
Packit |
3feee0 |
file_paths[i] = NULL;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
free(selinux_policytype);
|
|
Packit |
3feee0 |
selinux_policytype = NULL;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
void selinux_reset_config(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
fini_selinux_policyroot();
|
|
Packit |
3feee0 |
init_selinux_config();
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_reset_config)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
static const char *get_path(int idx)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
__selinux_once(once, init_selinux_config);
|
|
Packit |
3feee0 |
return file_paths[idx];
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_default_type_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(DEFAULT_TYPE);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_default_type_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_policy_root(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
__selinux_once(once, init_selinux_config);
|
|
Packit |
3feee0 |
return selinux_policyroot;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
int selinux_set_policy_root(const char *path)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
int i;
|
|
Packit |
3feee0 |
char *policy_type = strrchr(path, '/');
|
|
Packit |
3feee0 |
if (!policy_type) {
|
|
Packit |
3feee0 |
errno = EINVAL;
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
policy_type++;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
fini_selinux_policyroot();
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
selinux_policyroot = strdup(path);
|
|
Packit |
3feee0 |
if (! selinux_policyroot)
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (setpolicytype(policy_type) != 0)
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
for (i = 0; i < NEL; i++)
|
|
Packit |
3feee0 |
if (asprintf(&file_paths[i], "%s%s",
|
|
Packit |
3feee0 |
selinux_policyroot,
|
|
Packit |
3feee0 |
file_path_suffixes_data.str +
|
|
Packit |
3feee0 |
file_path_suffixes_idx[i])
|
|
Packit |
3feee0 |
== -1)
|
|
Packit |
3feee0 |
return -1;
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
return 0;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return selinux_rootpath;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_default_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(DEFAULT_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_default_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_securetty_types_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(SECURETTY_TYPES);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_securetty_types_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_failsafe_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(FAILSAFE_CONTEXT);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_failsafe_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_removable_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(REMOVABLE_CONTEXT);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_removable_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_binary_policy_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(BINPOLICY);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_binary_policy_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_current_policy_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
int rc = 0;
|
|
Packit |
3feee0 |
int vers = 0;
|
|
Packit |
3feee0 |
static char policy_path[PATH_MAX];
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (selinux_mnt) {
|
|
Packit |
3feee0 |
snprintf(policy_path, sizeof(policy_path), "%s/policy", selinux_mnt);
|
|
Packit |
3feee0 |
if (access(policy_path, F_OK) == 0 ) {
|
|
Packit |
3feee0 |
return policy_path;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
vers = security_policyvers();
|
|
Packit |
3feee0 |
do {
|
|
Packit |
3feee0 |
/* Check prior versions to see if old policy is available */
|
|
Packit |
3feee0 |
snprintf(policy_path, sizeof(policy_path), "%s.%d",
|
|
Packit |
3feee0 |
selinux_binary_policy_path(), vers);
|
|
Packit |
3feee0 |
} while ((rc = access(policy_path, F_OK)) && --vers > 0);
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
if (rc) return NULL;
|
|
Packit |
3feee0 |
return policy_path;
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_current_policy_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_file_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(FILE_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_file_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_homedir_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(HOMEDIR_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_homedir_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_media_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(MEDIA_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_media_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_customizable_types_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(CUSTOMIZABLE_TYPES);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_customizable_types_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(CONTEXTS_DIR);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_user_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(USER_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_user_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_booleans_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(BOOLEANS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_booleans_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_users_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(USERS_DIR);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_users_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_usersconf_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(SEUSERS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_usersconf_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_translations_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(TRANSLATIONS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_translations_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_colors_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(COLORS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_colors_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_netfilter_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(NETFILTER_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_netfilter_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_file_context_homedir_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(FILE_CONTEXTS_HOMEDIR);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_file_context_homedir_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_file_context_local_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(FILE_CONTEXTS_LOCAL);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_file_context_local_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_x_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(X_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_x_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_virtual_domain_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(VIRTUAL_DOMAIN);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_virtual_domain_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_virtual_image_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(VIRTUAL_IMAGE);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_virtual_image_context_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_lxc_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(LXC_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_lxc_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_openrc_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(OPENRC_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_openrc_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_openssh_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(OPENSSH_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_openssh_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_snapperd_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(SNAPPERD_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_snapperd_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_systemd_contexts_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(SYSTEMD_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_systemd_contexts_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char * selinux_booleans_subs_path(void) {
|
|
Packit |
3feee0 |
return get_path(BOOLEAN_SUBS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_booleans_subs_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char * selinux_file_context_subs_path(void) {
|
|
Packit |
3feee0 |
return get_path(FILE_CONTEXT_SUBS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_file_context_subs_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char * selinux_file_context_subs_dist_path(void) {
|
|
Packit |
3feee0 |
return get_path(FILE_CONTEXT_SUBS_DIST);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_file_context_subs_dist_path)
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
const char *selinux_sepgsql_context_path(void)
|
|
Packit |
3feee0 |
{
|
|
Packit |
3feee0 |
return get_path(SEPGSQL_CONTEXTS);
|
|
Packit |
3feee0 |
}
|
|
Packit |
3feee0 |
|
|
Packit |
3feee0 |
hidden_def(selinux_sepgsql_context_path)
|