init problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I just tried to boot a selinux installation in the plain old way (ie.
without initramfs) and it seems there is a bug in the init mechanism.
Sysvinit has a

#ifdef WITH_SELINUX
        if (getenv("SELINUX_INIT") == NULL && !is_selinux_enabled()) {
          putenv("SELINUX_INIT=YES");
          if (selinux_init_load_policy(&enforce) == 0 ) {
            execv(myname, argv);

whereas the is_selinux_enabled man page says "returns 1 if SELinux is
running or 0 if it is not.".

The problem is that init is the first process and at that very early
point neither /selinux nor /proc is mounted. The function uses these to
determine the state of things and if it can't it returns a -1, which is
an undocumented value and thus a value not accounted for.

So I think that either is_selinux_enabled should return 0 if it can't
tell (or use some other mechanism to tell), or -1 should be documented
in the man page and the sysvinit code should be changed to read 

  if (getenv("SELINUX_INIT") == NULL && (0 == is_selinux_enabled())) {
                                         ^^^^

Michal Svoboda

Attachment: pgp6rYPLav30p.pgp
Description: PGP signature


[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux