am b2639f40: Merge "Label sockets consistently with the seclabel value if specified."
# By Stephen Smalley # Via Gerrit Code Review (1) and Stephen Smalley (1) * commit 'b2639f4015c9fb2ff10c7bfae6074a8d968f5b7e': Label sockets consistently with the seclabel value if specified.
This commit is contained in:
commit
7480c0079d
1 changed files with 27 additions and 19 deletions
46
init/init.c
46
init/init.c
|
|
@ -198,28 +198,36 @@ void service_start(struct service *svc, const char *dynamic_args)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_selinux_enabled() > 0) {
|
if (is_selinux_enabled() > 0) {
|
||||||
char *mycon = NULL, *fcon = NULL;
|
if (svc->seclabel) {
|
||||||
|
scon = strdup(svc->seclabel);
|
||||||
|
if (!scon) {
|
||||||
|
ERROR("Out of memory while starting '%s'\n", svc->name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char *mycon = NULL, *fcon = NULL;
|
||||||
|
|
||||||
INFO("computing context for service '%s'\n", svc->args[0]);
|
INFO("computing context for service '%s'\n", svc->args[0]);
|
||||||
rc = getcon(&mycon);
|
rc = getcon(&mycon);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = getfilecon(svc->args[0], &fcon);
|
rc = getfilecon(svc->args[0], &fcon);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||||
|
freecon(mycon);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = security_compute_create(mycon, fcon, string_to_security_class("process"), &scon);
|
||||||
freecon(mycon);
|
freecon(mycon);
|
||||||
return;
|
freecon(fcon);
|
||||||
}
|
if (rc < 0) {
|
||||||
|
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||||
rc = security_compute_create(mycon, fcon, string_to_security_class("process"), &scon);
|
return;
|
||||||
freecon(mycon);
|
}
|
||||||
freecon(fcon);
|
|
||||||
if (rc < 0) {
|
|
||||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue