am c66e37b2: Merge "init: refuse to start process if domain transition not defined"

* commit 'c66e37b2da62f536d698b0265321fb02929f7ea5':
  init: refuse to start process if domain transition not defined
This commit is contained in:
Nick Kralevich 2015-07-16 19:35:50 +00:00 committed by Android Git Automerger
commit d9bb785244

View file

@ -239,16 +239,20 @@ void service_start(struct service *svc, const char *dynamic_args)
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); free(mycon);
return; return;
} }
rc = security_compute_create(mycon, fcon, string_to_security_class("process"), &scon); rc = security_compute_create(mycon, fcon, string_to_security_class("process"), &scon);
if (rc == 0 && !strcmp(scon, mycon)) { if (rc == 0 && !strcmp(scon, mycon)) {
ERROR("Warning! Service %s needs a SELinux domain defined; please fix!\n", svc->name); ERROR("Service %s does not have a SELinux domain defined.\n", svc->name);
free(mycon);
free(fcon);
free(scon);
return;
} }
freecon(mycon); free(mycon);
freecon(fcon); free(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);
return; return;
@ -285,7 +289,7 @@ void service_start(struct service *svc, const char *dynamic_args)
} }
} }
freecon(scon); free(scon);
scon = NULL; scon = NULL;
if (svc->writepid_files_) { if (svc->writepid_files_) {
@ -374,7 +378,7 @@ void service_start(struct service *svc, const char *dynamic_args)
_exit(127); _exit(127);
} }
freecon(scon); free(scon);
if (pid < 0) { if (pid < 0) {
ERROR("failed to start '%s'\n", svc->name); ERROR("failed to start '%s'\n", svc->name);