Move get_feature_policy to sway/security.c

This commit is contained in:
Jerzi Kaminsky 2017-04-15 17:16:32 +03:00
parent b4357a8eb6
commit bfb99235e3
3 changed files with 22 additions and 19 deletions

View file

@ -7,6 +7,8 @@ uint32_t get_feature_policy_mask(pid_t pid);
uint32_t get_ipc_policy_mask(pid_t pid); uint32_t get_ipc_policy_mask(pid_t pid);
uint32_t get_command_policy_mask(const char *cmd); uint32_t get_command_policy_mask(const char *cmd);
struct feature_policy *get_feature_policy(const char *name);
const char *command_policy_str(enum command_context context); const char *command_policy_str(enum command_context context);
struct feature_policy *alloc_feature_policy(const char *program); struct feature_policy *alloc_feature_policy(const char *program);

View file

@ -38,25 +38,6 @@ static enum secure_feature get_features(int argc, char **argv,
return features; return features;
} }
static struct feature_policy *get_feature_policy(const char *name) {
struct feature_policy *policy = NULL;
for (int i = 0; i < config->feature_policies->length; ++i) {
struct feature_policy *p = config->feature_policies->items[i];
if (strcmp(p->program, name) == 0) {
policy = p;
break;
}
}
if (!policy) {
policy = alloc_feature_policy(name);
if (!policy) {
sway_abort("Unable to allocate security policy");
}
list_add(config->feature_policies, policy);
}
return policy;
}
struct cmd_results *cmd_permit(int argc, char **argv) { struct cmd_results *cmd_permit(int argc, char **argv) {
struct cmd_results *error = NULL; struct cmd_results *error = NULL;
if ((error = checkarg(argc, "permit", EXPECTED_MORE_THAN, 1))) { if ((error = checkarg(argc, "permit", EXPECTED_MORE_THAN, 1))) {

View file

@ -94,6 +94,26 @@ static const char *get_pid_exe(pid_t pid) {
return link; return link;
} }
struct feature_policy *get_feature_policy(const char *name) {
struct feature_policy *policy = NULL;
for (int i = 0; i < config->feature_policies->length; ++i) {
struct feature_policy *p = config->feature_policies->items[i];
if (strcmp(p->program, name) == 0) {
policy = p;
break;
}
}
if (!policy) {
policy = alloc_feature_policy(name);
if (!policy) {
sway_abort("Unable to allocate security policy");
}
list_add(config->feature_policies, policy);
}
return policy;
}
uint32_t get_feature_policy_mask(pid_t pid) { uint32_t get_feature_policy_mask(pid_t pid) {
uint32_t default_policy = 0; uint32_t default_policy = 0;
const char *link = get_pid_exe(pid); const char *link = get_pid_exe(pid);