Commit 9bfdc0ad by Serge Hallyn Committed by Stéphane Graber

Don't try to change aa label if we are already apparmor-confined

parent 642e2c5e
...@@ -127,12 +127,31 @@ again: ...@@ -127,12 +127,31 @@ again:
return buf; return buf;
} }
static int apparmor_am_unconfined(void) /*
* Probably makes sense to reorganize these to only read
* the label once
*/
static bool apparmor_am_unconfined(void)
{ {
char *p = apparmor_process_label_get(getpid()); char *p = apparmor_process_label_get(getpid());
int ret = 0; bool ret = false;
if (!p || strcmp(p, "unconfined") == 0) if (!p || strcmp(p, "unconfined") == 0)
ret = 1; ret = true;
free(p);
return ret;
}
/* aa stacking is not yet supported */
static bool aa_stacking_supported(void) {
return false;
}
/* are we in a confined container? */
static bool in_aa_confined_container(void) {
char *p = apparmor_process_label_get(getpid());
bool ret = false;
if (p && strcmp(p, "/usr/bin/lxc-start") != 0)
ret = true;
free(p); free(p);
return ret; return ret;
} }
...@@ -163,6 +182,19 @@ static int apparmor_process_label_set(const char *inlabel, struct lxc_conf *conf ...@@ -163,6 +182,19 @@ static int apparmor_process_label_set(const char *inlabel, struct lxc_conf *conf
return 0; return 0;
} }
/*
* If we are already confined and no profile was requested,
* then default to unchanged
*/
if (in_aa_confined_container() && !aa_stacking_supported()) {
if (label) {
ERROR("already apparmor confined, but new label requested.");
return -1;
}
INFO("Already apparmor-confined");
return 0;
}
if (!label) { if (!label) {
if (use_default) if (use_default)
label = AA_DEF_PROFILE; label = AA_DEF_PROFILE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment