Label sockets consistently with the seclabel value if specified.
This is necessary to ensure that the adbd socket is created in the adbd domain rather than the init domain. Change-Id: Id4997d7f074aeefea62b41c87b46a6609e03f527 Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
This commit is contained in:
parent
3ddc0059bb
commit
30f3033042
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) {
|
||||
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]);
|
||||
rc = getcon(&mycon);
|
||||
if (rc < 0) {
|
||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||
return;
|
||||
}
|
||||
INFO("computing context for service '%s'\n", svc->args[0]);
|
||||
rc = getcon(&mycon);
|
||||
if (rc < 0) {
|
||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||
return;
|
||||
}
|
||||
|
||||
rc = getfilecon(svc->args[0], &fcon);
|
||||
if (rc < 0) {
|
||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||
rc = getfilecon(svc->args[0], &fcon);
|
||||
if (rc < 0) {
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
||||
rc = security_compute_create(mycon, fcon, string_to_security_class("process"), &scon);
|
||||
freecon(mycon);
|
||||
freecon(fcon);
|
||||
if (rc < 0) {
|
||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||
return;
|
||||
freecon(fcon);
|
||||
if (rc < 0) {
|
||||
ERROR("could not get context while starting '%s'\n", svc->name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue