MLS/MCS disabled in building a policy module

KaiGai Kohei kaigai at kaigai.gr.jp
Thu Aug 9 10:32:45 UTC 2007


I want you to see the following console log:

[root at masu ~]# cd /usr/share/selinux/devel
[root at masu devel]# make -f ./Makefile NAME=targeted
Compiling targeted example module
/usr/bin/checkmodule:  loading policy configuration from tmp/example.tmp
/usr/bin/checkmodule:  policy configuration loaded
/usr/bin/checkmodule:  writing binary representation (version 6) to tmp/example.mod
Creating targeted example.pp policy package
rm tmp/example.mod tmp/example.mod.fc
[root at masu devel]# /usr/sbin/semodule -i example.pp
libsepol.link_modules: Tried to link in a non-MLS module with an MLS base.
libsemanage.semanage_link_sandbox: Link packages failed
/usr/sbin/semodule:  Failed!
[root at masu devel]#

When we try to build a policy package without specific TYPE
parameter, $(NAME)${MCSFLAG} is set as a default value in the
/usr/share/selinux/devel/Makefile .

$(NAME) is typically one of "targeted", "strict" or "mls", and
$(MCSFLAG) is "-mls" or "-mcs".
Therefore, "targeted-mcs" will be used when we omit TYPE parameter
for example.

In the next stage, /usr/share/selinux/devel/include/Makefile checks
TYPE parameter whether MLS/MCS should be enabled, or not.
But the above default value is not suitable for the following conditional
statement.
-------------------------------------
# enable MLS if requested.
ifeq "$(TYPE)" "mls"
        M4PARAM += -D enable_mls
        CHECKPOLICY += -M
        CHECKMODULE += -M
endif

# enable MLS if MCS requested.
ifeq "$(TYPE)" "mcs"
        M4PARAM += -D enable_mcs
        CHECKPOLICY += -M
        CHECKMODULE += -M
endif
-------------------------------------

The origin of the problem is that unexpected TYPE will be generated
when we omit it.
The following patch will fixes the problem.

--- Makefile.devel.orig 2007-08-09 16:25:45.000000000 +0900
+++ Makefile.devel      2007-08-09 16:26:08.000000000 +0900
@@ -10,15 +10,15 @@
 endif

 ifeq ($(MLSENABLED),1)
-       MCSFLAG=-mcs
+       MCSFLAG=mcs
 endif

 ifeq ($(NAME), mls)
        NAME = strict
-       MCSFLAG = -mls
+       MCSFLAG=mls
 endif

-TYPE ?= $(NAME)${MCSFLAG}
+TYPE ?= $(MCSFLAG)
 HEADERDIR := $(SHAREDIR)/devel/include
 include $(HEADERDIR)/Makefile

-- 
KaiGai Kohei <kaigai at kaigai.gr.jp>




More information about the fedora-selinux-list mailing list