selinux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH userspace v2 0/4] Fix build with -fno-common
@ 2020-01-23 12:57 Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 1/4] libsepol: fix CIL_KEY_* build errors " Ondrej Mosnacek
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-23 12:57 UTC (permalink / raw)
  To: selinux

GCC 10 is going to enable -fno-common by default [1], so fix all build
errors uncovered by it and add it to global CFLAGS to avoid introducing
new bugs.

Changes in v2:
 - remove also struct te_assert definition, which is also useless
 - redo cil_mem_error_handler to match commit 4459d635b8f1 as suggested
   by Jim Carter

Travis build: [2]

[1] https://gcc.gnu.org/gcc-10/porting_to.html#common
[2] https://travis-ci.org/WOnder93/selinux/builds/640875119

Ondrej Mosnacek (4):
  libsepol: fix CIL_KEY_* build errors with -fno-common
  libsepol: remove leftovers of cil_mem_error_handler
  checkpolicy: remove unused te_assertions
  Makefile: always build with -fno-common

 Makefile                        |   3 +-
 checkpolicy/checkpolicy.h       |  14 --
 libsepol/cil/src/cil.c          | 162 ++++++++++++++++
 libsepol/cil/src/cil_internal.h | 322 ++++++++++++++++----------------
 libsepol/cil/src/cil_mem.h      |   1 -
 libsepol/cil/src/cil_strpool.c  |   8 +-
 6 files changed, 329 insertions(+), 181 deletions(-)

-- 
2.24.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH userspace v2 1/4] libsepol: fix CIL_KEY_* build errors with -fno-common
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
@ 2020-01-23 12:57 ` Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 2/4] libsepol: remove leftovers of cil_mem_error_handler Ondrej Mosnacek
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-23 12:57 UTC (permalink / raw)
  To: selinux

GCC 10 comes with -fno-common enabled by default - fix the CIL_KEY_*
global variables to be defined only once in cil.c and declared in the
header file correctly with the 'extern' keyword, so that other units
including the file don't generate duplicate definitions.

Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 libsepol/cil/src/cil.c          | 162 ++++++++++++++++
 libsepol/cil/src/cil_internal.h | 322 ++++++++++++++++----------------
 2 files changed, 323 insertions(+), 161 deletions(-)

diff --git a/libsepol/cil/src/cil.c b/libsepol/cil/src/cil.c
index de729cf8..d222ad3a 100644
--- a/libsepol/cil/src/cil.c
+++ b/libsepol/cil/src/cil.c
@@ -77,6 +77,168 @@ int cil_sym_sizes[CIL_SYM_ARRAY_NUM][CIL_SYM_NUM] = {
 	{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
 };
 
+char *CIL_KEY_CONS_T1;
+char *CIL_KEY_CONS_T2;
+char *CIL_KEY_CONS_T3;
+char *CIL_KEY_CONS_R1;
+char *CIL_KEY_CONS_R2;
+char *CIL_KEY_CONS_R3;
+char *CIL_KEY_CONS_U1;
+char *CIL_KEY_CONS_U2;
+char *CIL_KEY_CONS_U3;
+char *CIL_KEY_CONS_L1;
+char *CIL_KEY_CONS_L2;
+char *CIL_KEY_CONS_H1;
+char *CIL_KEY_CONS_H2;
+char *CIL_KEY_AND;
+char *CIL_KEY_OR;
+char *CIL_KEY_NOT;
+char *CIL_KEY_EQ;
+char *CIL_KEY_NEQ;
+char *CIL_KEY_CONS_DOM;
+char *CIL_KEY_CONS_DOMBY;
+char *CIL_KEY_CONS_INCOMP;
+char *CIL_KEY_CONDTRUE;
+char *CIL_KEY_CONDFALSE;
+char *CIL_KEY_SELF;
+char *CIL_KEY_OBJECT_R;
+char *CIL_KEY_STAR;
+char *CIL_KEY_TCP;
+char *CIL_KEY_UDP;
+char *CIL_KEY_DCCP;
+char *CIL_KEY_SCTP;
+char *CIL_KEY_AUDITALLOW;
+char *CIL_KEY_TUNABLEIF;
+char *CIL_KEY_ALLOW;
+char *CIL_KEY_DONTAUDIT;
+char *CIL_KEY_TYPETRANSITION;
+char *CIL_KEY_TYPECHANGE;
+char *CIL_KEY_CALL;
+char *CIL_KEY_TUNABLE;
+char *CIL_KEY_XOR;
+char *CIL_KEY_ALL;
+char *CIL_KEY_RANGE;
+char *CIL_KEY_GLOB;
+char *CIL_KEY_FILE;
+char *CIL_KEY_DIR;
+char *CIL_KEY_CHAR;
+char *CIL_KEY_BLOCK;
+char *CIL_KEY_SOCKET;
+char *CIL_KEY_PIPE;
+char *CIL_KEY_SYMLINK;
+char *CIL_KEY_ANY;
+char *CIL_KEY_XATTR;
+char *CIL_KEY_TASK;
+char *CIL_KEY_TRANS;
+char *CIL_KEY_TYPE;
+char *CIL_KEY_ROLE;
+char *CIL_KEY_USER;
+char *CIL_KEY_USERATTRIBUTE;
+char *CIL_KEY_USERATTRIBUTESET;
+char *CIL_KEY_SENSITIVITY;
+char *CIL_KEY_CATEGORY;
+char *CIL_KEY_CATSET;
+char *CIL_KEY_LEVEL;
+char *CIL_KEY_LEVELRANGE;
+char *CIL_KEY_CLASS;
+char *CIL_KEY_IPADDR;
+char *CIL_KEY_MAP_CLASS;
+char *CIL_KEY_CLASSPERMISSION;
+char *CIL_KEY_BOOL;
+char *CIL_KEY_STRING;
+char *CIL_KEY_NAME;
+char *CIL_KEY_SOURCE;
+char *CIL_KEY_TARGET;
+char *CIL_KEY_LOW;
+char *CIL_KEY_HIGH;
+char *CIL_KEY_LOW_HIGH;
+char *CIL_KEY_GLBLUB;
+char *CIL_KEY_HANDLEUNKNOWN;
+char *CIL_KEY_HANDLEUNKNOWN_ALLOW;
+char *CIL_KEY_HANDLEUNKNOWN_DENY;
+char *CIL_KEY_HANDLEUNKNOWN_REJECT;
+char *CIL_KEY_MACRO;
+char *CIL_KEY_IN;
+char *CIL_KEY_MLS;
+char *CIL_KEY_DEFAULTRANGE;
+char *CIL_KEY_BLOCKINHERIT;
+char *CIL_KEY_BLOCKABSTRACT;
+char *CIL_KEY_CLASSORDER;
+char *CIL_KEY_CLASSMAPPING;
+char *CIL_KEY_CLASSPERMISSIONSET;
+char *CIL_KEY_COMMON;
+char *CIL_KEY_CLASSCOMMON;
+char *CIL_KEY_SID;
+char *CIL_KEY_SIDCONTEXT;
+char *CIL_KEY_SIDORDER;
+char *CIL_KEY_USERLEVEL;
+char *CIL_KEY_USERRANGE;
+char *CIL_KEY_USERBOUNDS;
+char *CIL_KEY_USERPREFIX;
+char *CIL_KEY_SELINUXUSER;
+char *CIL_KEY_SELINUXUSERDEFAULT;
+char *CIL_KEY_TYPEATTRIBUTE;
+char *CIL_KEY_TYPEATTRIBUTESET;
+char *CIL_KEY_EXPANDTYPEATTRIBUTE;
+char *CIL_KEY_TYPEALIAS;
+char *CIL_KEY_TYPEALIASACTUAL;
+char *CIL_KEY_TYPEBOUNDS;
+char *CIL_KEY_TYPEPERMISSIVE;
+char *CIL_KEY_RANGETRANSITION;
+char *CIL_KEY_USERROLE;
+char *CIL_KEY_ROLETYPE;
+char *CIL_KEY_ROLETRANSITION;
+char *CIL_KEY_ROLEALLOW;
+char *CIL_KEY_ROLEATTRIBUTE;
+char *CIL_KEY_ROLEATTRIBUTESET;
+char *CIL_KEY_ROLEBOUNDS;
+char *CIL_KEY_BOOLEANIF;
+char *CIL_KEY_NEVERALLOW;
+char *CIL_KEY_TYPEMEMBER;
+char *CIL_KEY_SENSALIAS;
+char *CIL_KEY_SENSALIASACTUAL;
+char *CIL_KEY_CATALIAS;
+char *CIL_KEY_CATALIASACTUAL;
+char *CIL_KEY_CATORDER;
+char *CIL_KEY_SENSITIVITYORDER;
+char *CIL_KEY_SENSCAT;
+char *CIL_KEY_CONSTRAIN;
+char *CIL_KEY_MLSCONSTRAIN;
+char *CIL_KEY_VALIDATETRANS;
+char *CIL_KEY_MLSVALIDATETRANS;
+char *CIL_KEY_CONTEXT;
+char *CIL_KEY_FILECON;
+char *CIL_KEY_IBPKEYCON;
+char *CIL_KEY_IBENDPORTCON;
+char *CIL_KEY_PORTCON;
+char *CIL_KEY_NODECON;
+char *CIL_KEY_GENFSCON;
+char *CIL_KEY_NETIFCON;
+char *CIL_KEY_PIRQCON;
+char *CIL_KEY_IOMEMCON;
+char *CIL_KEY_IOPORTCON;
+char *CIL_KEY_PCIDEVICECON;
+char *CIL_KEY_DEVICETREECON;
+char *CIL_KEY_FSUSE;
+char *CIL_KEY_POLICYCAP;
+char *CIL_KEY_OPTIONAL;
+char *CIL_KEY_DEFAULTUSER;
+char *CIL_KEY_DEFAULTROLE;
+char *CIL_KEY_DEFAULTTYPE;
+char *CIL_KEY_ROOT;
+char *CIL_KEY_NODE;
+char *CIL_KEY_PERM;
+char *CIL_KEY_ALLOWX;
+char *CIL_KEY_AUDITALLOWX;
+char *CIL_KEY_DONTAUDITX;
+char *CIL_KEY_NEVERALLOWX;
+char *CIL_KEY_PERMISSIONX;
+char *CIL_KEY_IOCTL;
+char *CIL_KEY_UNORDERED;
+char *CIL_KEY_SRC_INFO;
+char *CIL_KEY_SRC_CIL;
+char *CIL_KEY_SRC_HLL;
+
 static void cil_init_keys(void)
 {
 	/* Initialize CIL Keys into strpool */
diff --git a/libsepol/cil/src/cil_internal.h b/libsepol/cil/src/cil_internal.h
index 30fab649..9bdcbdd0 100644
--- a/libsepol/cil/src/cil_internal.h
+++ b/libsepol/cil/src/cil_internal.h
@@ -74,167 +74,167 @@ enum cil_pass {
 /*
 	Keywords
 */
-char *CIL_KEY_CONS_T1;
-char *CIL_KEY_CONS_T2;
-char *CIL_KEY_CONS_T3;
-char *CIL_KEY_CONS_R1;
-char *CIL_KEY_CONS_R2;
-char *CIL_KEY_CONS_R3;
-char *CIL_KEY_CONS_U1;
-char *CIL_KEY_CONS_U2;
-char *CIL_KEY_CONS_U3;
-char *CIL_KEY_CONS_L1;
-char *CIL_KEY_CONS_L2;
-char *CIL_KEY_CONS_H1;
-char *CIL_KEY_CONS_H2;
-char *CIL_KEY_AND;
-char *CIL_KEY_OR;
-char *CIL_KEY_NOT;
-char *CIL_KEY_EQ;
-char *CIL_KEY_NEQ;
-char *CIL_KEY_CONS_DOM;
-char *CIL_KEY_CONS_DOMBY;
-char *CIL_KEY_CONS_INCOMP;
-char *CIL_KEY_CONDTRUE;
-char *CIL_KEY_CONDFALSE;
-char *CIL_KEY_SELF;
-char *CIL_KEY_OBJECT_R;
-char *CIL_KEY_STAR;
-char *CIL_KEY_TCP;
-char *CIL_KEY_UDP;
-char *CIL_KEY_DCCP;
-char *CIL_KEY_SCTP;
-char *CIL_KEY_AUDITALLOW;
-char *CIL_KEY_TUNABLEIF;
-char *CIL_KEY_ALLOW;
-char *CIL_KEY_DONTAUDIT;
-char *CIL_KEY_TYPETRANSITION;
-char *CIL_KEY_TYPECHANGE;
-char *CIL_KEY_CALL;
-char *CIL_KEY_TUNABLE;
-char *CIL_KEY_XOR;
-char *CIL_KEY_ALL;
-char *CIL_KEY_RANGE;
-char *CIL_KEY_GLOB;
-char *CIL_KEY_FILE;
-char *CIL_KEY_DIR;
-char *CIL_KEY_CHAR;
-char *CIL_KEY_BLOCK;
-char *CIL_KEY_SOCKET;
-char *CIL_KEY_PIPE;
-char *CIL_KEY_SYMLINK;
-char *CIL_KEY_ANY;
-char *CIL_KEY_XATTR;
-char *CIL_KEY_TASK;
-char *CIL_KEY_TRANS;
-char *CIL_KEY_TYPE;
-char *CIL_KEY_ROLE;
-char *CIL_KEY_USER;
-char *CIL_KEY_USERATTRIBUTE;
-char *CIL_KEY_USERATTRIBUTESET;
-char *CIL_KEY_SENSITIVITY;
-char *CIL_KEY_CATEGORY;
-char *CIL_KEY_CATSET;
-char *CIL_KEY_LEVEL;
-char *CIL_KEY_LEVELRANGE;
-char *CIL_KEY_CLASS;
-char *CIL_KEY_IPADDR;
-char *CIL_KEY_MAP_CLASS;
-char *CIL_KEY_CLASSPERMISSION;
-char *CIL_KEY_BOOL;
-char *CIL_KEY_STRING;
-char *CIL_KEY_NAME;
-char *CIL_KEY_SOURCE;
-char *CIL_KEY_TARGET;
-char *CIL_KEY_LOW;
-char *CIL_KEY_HIGH;
-char *CIL_KEY_LOW_HIGH;
-char *CIL_KEY_GLBLUB;
-char *CIL_KEY_HANDLEUNKNOWN;
-char *CIL_KEY_HANDLEUNKNOWN_ALLOW;
-char *CIL_KEY_HANDLEUNKNOWN_DENY;
-char *CIL_KEY_HANDLEUNKNOWN_REJECT;
-char *CIL_KEY_MACRO;
-char *CIL_KEY_IN;
-char *CIL_KEY_MLS;
-char *CIL_KEY_DEFAULTRANGE;
-char *CIL_KEY_BLOCKINHERIT;
-char *CIL_KEY_BLOCKABSTRACT;
-char *CIL_KEY_CLASSORDER;
-char *CIL_KEY_CLASSMAPPING;
-char *CIL_KEY_CLASSPERMISSIONSET;
-char *CIL_KEY_COMMON;
-char *CIL_KEY_CLASSCOMMON;
-char *CIL_KEY_SID;
-char *CIL_KEY_SIDCONTEXT;
-char *CIL_KEY_SIDORDER;
-char *CIL_KEY_USERLEVEL;
-char *CIL_KEY_USERRANGE;
-char *CIL_KEY_USERBOUNDS;
-char *CIL_KEY_USERPREFIX;
-char *CIL_KEY_SELINUXUSER;
-char *CIL_KEY_SELINUXUSERDEFAULT;
-char *CIL_KEY_TYPEATTRIBUTE;
-char *CIL_KEY_TYPEATTRIBUTESET;
-char *CIL_KEY_EXPANDTYPEATTRIBUTE;
-char *CIL_KEY_TYPEALIAS;
-char *CIL_KEY_TYPEALIASACTUAL;
-char *CIL_KEY_TYPEBOUNDS;
-char *CIL_KEY_TYPEPERMISSIVE;
-char *CIL_KEY_RANGETRANSITION;
-char *CIL_KEY_USERROLE;
-char *CIL_KEY_ROLETYPE;
-char *CIL_KEY_ROLETRANSITION;
-char *CIL_KEY_ROLEALLOW;
-char *CIL_KEY_ROLEATTRIBUTE;
-char *CIL_KEY_ROLEATTRIBUTESET;
-char *CIL_KEY_ROLEBOUNDS;
-char *CIL_KEY_BOOLEANIF;
-char *CIL_KEY_NEVERALLOW;
-char *CIL_KEY_TYPEMEMBER;
-char *CIL_KEY_SENSALIAS;
-char *CIL_KEY_SENSALIASACTUAL;
-char *CIL_KEY_CATALIAS;
-char *CIL_KEY_CATALIASACTUAL;
-char *CIL_KEY_CATORDER;
-char *CIL_KEY_SENSITIVITYORDER;
-char *CIL_KEY_SENSCAT;
-char *CIL_KEY_CONSTRAIN;
-char *CIL_KEY_MLSCONSTRAIN;
-char *CIL_KEY_VALIDATETRANS;
-char *CIL_KEY_MLSVALIDATETRANS;
-char *CIL_KEY_CONTEXT;
-char *CIL_KEY_FILECON;
-char *CIL_KEY_IBPKEYCON;
-char *CIL_KEY_IBENDPORTCON;
-char *CIL_KEY_PORTCON;
-char *CIL_KEY_NODECON;
-char *CIL_KEY_GENFSCON;
-char *CIL_KEY_NETIFCON;
-char *CIL_KEY_PIRQCON;
-char *CIL_KEY_IOMEMCON;
-char *CIL_KEY_IOPORTCON;
-char *CIL_KEY_PCIDEVICECON;
-char *CIL_KEY_DEVICETREECON;
-char *CIL_KEY_FSUSE;
-char *CIL_KEY_POLICYCAP;
-char *CIL_KEY_OPTIONAL;
-char *CIL_KEY_DEFAULTUSER;
-char *CIL_KEY_DEFAULTROLE;
-char *CIL_KEY_DEFAULTTYPE;
-char *CIL_KEY_ROOT;
-char *CIL_KEY_NODE;
-char *CIL_KEY_PERM;
-char *CIL_KEY_ALLOWX;
-char *CIL_KEY_AUDITALLOWX;
-char *CIL_KEY_DONTAUDITX;
-char *CIL_KEY_NEVERALLOWX;
-char *CIL_KEY_PERMISSIONX;
-char *CIL_KEY_IOCTL;
-char *CIL_KEY_UNORDERED;
-char *CIL_KEY_SRC_INFO;
-char *CIL_KEY_SRC_CIL;
-char *CIL_KEY_SRC_HLL;
+extern char *CIL_KEY_CONS_T1;
+extern char *CIL_KEY_CONS_T2;
+extern char *CIL_KEY_CONS_T3;
+extern char *CIL_KEY_CONS_R1;
+extern char *CIL_KEY_CONS_R2;
+extern char *CIL_KEY_CONS_R3;
+extern char *CIL_KEY_CONS_U1;
+extern char *CIL_KEY_CONS_U2;
+extern char *CIL_KEY_CONS_U3;
+extern char *CIL_KEY_CONS_L1;
+extern char *CIL_KEY_CONS_L2;
+extern char *CIL_KEY_CONS_H1;
+extern char *CIL_KEY_CONS_H2;
+extern char *CIL_KEY_AND;
+extern char *CIL_KEY_OR;
+extern char *CIL_KEY_NOT;
+extern char *CIL_KEY_EQ;
+extern char *CIL_KEY_NEQ;
+extern char *CIL_KEY_CONS_DOM;
+extern char *CIL_KEY_CONS_DOMBY;
+extern char *CIL_KEY_CONS_INCOMP;
+extern char *CIL_KEY_CONDTRUE;
+extern char *CIL_KEY_CONDFALSE;
+extern char *CIL_KEY_SELF;
+extern char *CIL_KEY_OBJECT_R;
+extern char *CIL_KEY_STAR;
+extern char *CIL_KEY_TCP;
+extern char *CIL_KEY_UDP;
+extern char *CIL_KEY_DCCP;
+extern char *CIL_KEY_SCTP;
+extern char *CIL_KEY_AUDITALLOW;
+extern char *CIL_KEY_TUNABLEIF;
+extern char *CIL_KEY_ALLOW;
+extern char *CIL_KEY_DONTAUDIT;
+extern char *CIL_KEY_TYPETRANSITION;
+extern char *CIL_KEY_TYPECHANGE;
+extern char *CIL_KEY_CALL;
+extern char *CIL_KEY_TUNABLE;
+extern char *CIL_KEY_XOR;
+extern char *CIL_KEY_ALL;
+extern char *CIL_KEY_RANGE;
+extern char *CIL_KEY_GLOB;
+extern char *CIL_KEY_FILE;
+extern char *CIL_KEY_DIR;
+extern char *CIL_KEY_CHAR;
+extern char *CIL_KEY_BLOCK;
+extern char *CIL_KEY_SOCKET;
+extern char *CIL_KEY_PIPE;
+extern char *CIL_KEY_SYMLINK;
+extern char *CIL_KEY_ANY;
+extern char *CIL_KEY_XATTR;
+extern char *CIL_KEY_TASK;
+extern char *CIL_KEY_TRANS;
+extern char *CIL_KEY_TYPE;
+extern char *CIL_KEY_ROLE;
+extern char *CIL_KEY_USER;
+extern char *CIL_KEY_USERATTRIBUTE;
+extern char *CIL_KEY_USERATTRIBUTESET;
+extern char *CIL_KEY_SENSITIVITY;
+extern char *CIL_KEY_CATEGORY;
+extern char *CIL_KEY_CATSET;
+extern char *CIL_KEY_LEVEL;
+extern char *CIL_KEY_LEVELRANGE;
+extern char *CIL_KEY_CLASS;
+extern char *CIL_KEY_IPADDR;
+extern char *CIL_KEY_MAP_CLASS;
+extern char *CIL_KEY_CLASSPERMISSION;
+extern char *CIL_KEY_BOOL;
+extern char *CIL_KEY_STRING;
+extern char *CIL_KEY_NAME;
+extern char *CIL_KEY_SOURCE;
+extern char *CIL_KEY_TARGET;
+extern char *CIL_KEY_LOW;
+extern char *CIL_KEY_HIGH;
+extern char *CIL_KEY_LOW_HIGH;
+extern char *CIL_KEY_GLBLUB;
+extern char *CIL_KEY_HANDLEUNKNOWN;
+extern char *CIL_KEY_HANDLEUNKNOWN_ALLOW;
+extern char *CIL_KEY_HANDLEUNKNOWN_DENY;
+extern char *CIL_KEY_HANDLEUNKNOWN_REJECT;
+extern char *CIL_KEY_MACRO;
+extern char *CIL_KEY_IN;
+extern char *CIL_KEY_MLS;
+extern char *CIL_KEY_DEFAULTRANGE;
+extern char *CIL_KEY_BLOCKINHERIT;
+extern char *CIL_KEY_BLOCKABSTRACT;
+extern char *CIL_KEY_CLASSORDER;
+extern char *CIL_KEY_CLASSMAPPING;
+extern char *CIL_KEY_CLASSPERMISSIONSET;
+extern char *CIL_KEY_COMMON;
+extern char *CIL_KEY_CLASSCOMMON;
+extern char *CIL_KEY_SID;
+extern char *CIL_KEY_SIDCONTEXT;
+extern char *CIL_KEY_SIDORDER;
+extern char *CIL_KEY_USERLEVEL;
+extern char *CIL_KEY_USERRANGE;
+extern char *CIL_KEY_USERBOUNDS;
+extern char *CIL_KEY_USERPREFIX;
+extern char *CIL_KEY_SELINUXUSER;
+extern char *CIL_KEY_SELINUXUSERDEFAULT;
+extern char *CIL_KEY_TYPEATTRIBUTE;
+extern char *CIL_KEY_TYPEATTRIBUTESET;
+extern char *CIL_KEY_EXPANDTYPEATTRIBUTE;
+extern char *CIL_KEY_TYPEALIAS;
+extern char *CIL_KEY_TYPEALIASACTUAL;
+extern char *CIL_KEY_TYPEBOUNDS;
+extern char *CIL_KEY_TYPEPERMISSIVE;
+extern char *CIL_KEY_RANGETRANSITION;
+extern char *CIL_KEY_USERROLE;
+extern char *CIL_KEY_ROLETYPE;
+extern char *CIL_KEY_ROLETRANSITION;
+extern char *CIL_KEY_ROLEALLOW;
+extern char *CIL_KEY_ROLEATTRIBUTE;
+extern char *CIL_KEY_ROLEATTRIBUTESET;
+extern char *CIL_KEY_ROLEBOUNDS;
+extern char *CIL_KEY_BOOLEANIF;
+extern char *CIL_KEY_NEVERALLOW;
+extern char *CIL_KEY_TYPEMEMBER;
+extern char *CIL_KEY_SENSALIAS;
+extern char *CIL_KEY_SENSALIASACTUAL;
+extern char *CIL_KEY_CATALIAS;
+extern char *CIL_KEY_CATALIASACTUAL;
+extern char *CIL_KEY_CATORDER;
+extern char *CIL_KEY_SENSITIVITYORDER;
+extern char *CIL_KEY_SENSCAT;
+extern char *CIL_KEY_CONSTRAIN;
+extern char *CIL_KEY_MLSCONSTRAIN;
+extern char *CIL_KEY_VALIDATETRANS;
+extern char *CIL_KEY_MLSVALIDATETRANS;
+extern char *CIL_KEY_CONTEXT;
+extern char *CIL_KEY_FILECON;
+extern char *CIL_KEY_IBPKEYCON;
+extern char *CIL_KEY_IBENDPORTCON;
+extern char *CIL_KEY_PORTCON;
+extern char *CIL_KEY_NODECON;
+extern char *CIL_KEY_GENFSCON;
+extern char *CIL_KEY_NETIFCON;
+extern char *CIL_KEY_PIRQCON;
+extern char *CIL_KEY_IOMEMCON;
+extern char *CIL_KEY_IOPORTCON;
+extern char *CIL_KEY_PCIDEVICECON;
+extern char *CIL_KEY_DEVICETREECON;
+extern char *CIL_KEY_FSUSE;
+extern char *CIL_KEY_POLICYCAP;
+extern char *CIL_KEY_OPTIONAL;
+extern char *CIL_KEY_DEFAULTUSER;
+extern char *CIL_KEY_DEFAULTROLE;
+extern char *CIL_KEY_DEFAULTTYPE;
+extern char *CIL_KEY_ROOT;
+extern char *CIL_KEY_NODE;
+extern char *CIL_KEY_PERM;
+extern char *CIL_KEY_ALLOWX;
+extern char *CIL_KEY_AUDITALLOWX;
+extern char *CIL_KEY_DONTAUDITX;
+extern char *CIL_KEY_NEVERALLOWX;
+extern char *CIL_KEY_PERMISSIONX;
+extern char *CIL_KEY_IOCTL;
+extern char *CIL_KEY_UNORDERED;
+extern char *CIL_KEY_SRC_INFO;
+extern char *CIL_KEY_SRC_CIL;
+extern char *CIL_KEY_SRC_HLL;
 
 /*
 	Symbol Table Array Indices
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH userspace v2 2/4] libsepol: remove leftovers of cil_mem_error_handler
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 1/4] libsepol: fix CIL_KEY_* build errors " Ondrej Mosnacek
@ 2020-01-23 12:57 ` Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 3/4] checkpolicy: remove unused te_assertions Ondrej Mosnacek
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-23 12:57 UTC (permalink / raw)
  To: selinux

Commit 4459d635b8f1 ("libsepol: Remove cil_mem_error_handler() function
pointer") replaced cil_mem_error_handler usage with inline contents of
the default handler. However, it left over the header declaration and
two callers. Convert these as well and remove the header declaration.

This also fixes a build failure with -fno-common.

Fixes: 4459d635b8f1 ("libsepol: Remove cil_mem_error_handler() function pointer")
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 libsepol/cil/src/cil_mem.h     | 1 -
 libsepol/cil/src/cil_strpool.c | 8 ++++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/libsepol/cil/src/cil_mem.h b/libsepol/cil/src/cil_mem.h
index 902ce131..794f02a3 100644
--- a/libsepol/cil/src/cil_mem.h
+++ b/libsepol/cil/src/cil_mem.h
@@ -36,7 +36,6 @@ void *cil_calloc(size_t num_elements, size_t element_size);
 void *cil_realloc(void *ptr, size_t size);
 char *cil_strdup(const char *str);
 int cil_asprintf(char **strp, const char *fmt, ...);
-void (*cil_mem_error_handler)(void);
 
 #endif /* CIL_MEM_H_ */
 
diff --git a/libsepol/cil/src/cil_strpool.c b/libsepol/cil/src/cil_strpool.c
index 97d4c4b9..2598bbf3 100644
--- a/libsepol/cil/src/cil_strpool.c
+++ b/libsepol/cil/src/cil_strpool.c
@@ -80,8 +80,8 @@ char *cil_strpool_add(const char *str)
 		int rc = hashtab_insert(cil_strpool_tab, (hashtab_key_t)strpool_ref->str, strpool_ref);
 		if (rc != SEPOL_OK) {
 			pthread_mutex_unlock(&cil_strpool_mutex);
-			(*cil_mem_error_handler)();
-			pthread_mutex_lock(&cil_strpool_mutex);
+			cil_log(CIL_ERR, "Failed to allocate memory\n");
+			exit(1);
 		}
 	}
 
@@ -104,8 +104,8 @@ void cil_strpool_init(void)
 		cil_strpool_tab = hashtab_create(cil_strpool_hash, cil_strpool_compare, CIL_STRPOOL_TABLE_SIZE);
 		if (cil_strpool_tab == NULL) {
 			pthread_mutex_unlock(&cil_strpool_mutex);
-			(*cil_mem_error_handler)();
-			return;
+			cil_log(CIL_ERR, "Failed to allocate memory\n");
+			exit(1);
 		}
 	}
 	cil_strpool_readers++;
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH userspace v2 3/4] checkpolicy: remove unused te_assertions
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 1/4] libsepol: fix CIL_KEY_* build errors " Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 2/4] libsepol: remove leftovers of cil_mem_error_handler Ondrej Mosnacek
@ 2020-01-23 12:57 ` Ondrej Mosnacek
  2020-01-23 12:57 ` [PATCH userspace v2 4/4] Makefile: always build with -fno-common Ondrej Mosnacek
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-23 12:57 UTC (permalink / raw)
  To: selinux

This variable is declared in a header file, but never defined or used.
The te_assert structure definition is only used in this declaration, so
remove both.

Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 checkpolicy/checkpolicy.h | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/checkpolicy/checkpolicy.h b/checkpolicy/checkpolicy.h
index 3868f1fa..f127687e 100644
--- a/checkpolicy/checkpolicy.h
+++ b/checkpolicy/checkpolicy.h
@@ -1,20 +1,6 @@
 #ifndef _CHECKPOLICY_H_
 #define _CHECKPOLICY_H_
 
-#include <sepol/policydb/ebitmap.h>
-
-typedef struct te_assert {
-	ebitmap_t stypes;
-	ebitmap_t ttypes;
-	ebitmap_t tclasses;
-	int self;
-	sepol_access_vector_t *avp;
-	unsigned long line;
-	struct te_assert *next;
-} te_assert_t;
-
-te_assert_t *te_assertions;
-
 extern unsigned int policyvers;
 
 #endif
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH userspace v2 4/4] Makefile: always build with -fno-common
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
                   ` (2 preceding siblings ...)
  2020-01-23 12:57 ` [PATCH userspace v2 3/4] checkpolicy: remove unused te_assertions Ondrej Mosnacek
@ 2020-01-23 12:57 ` Ondrej Mosnacek
  2020-01-23 18:26   ` [Non-DoD Source] " jwcart2
  2020-01-28  9:54   ` Petr Lautrbach
  2020-01-24 10:39 ` [PATCH userspace v2 0/4] Fix " Jason Zaman
  2020-01-27 15:56 ` [Non-DoD Source] " jwcart2
  5 siblings, 2 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-23 12:57 UTC (permalink / raw)
  To: selinux

GCC 10 has it enabled by default and everything now builds OK with it,
so add it to CFLAGS to avoid breaking the build in the future.

Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index c238dbc8..298cd2b7 100644
--- a/Makefile
+++ b/Makefile
@@ -16,7 +16,8 @@ else
 		-Wstrict-prototypes \
 		-Wundef \
 		-Wunused \
-		-Wwrite-strings
+		-Wwrite-strings \
+		-fno-common
 endif
 
 ifneq ($(DESTDIR),)
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [Non-DoD Source] [PATCH userspace v2 4/4] Makefile: always build with -fno-common
  2020-01-23 12:57 ` [PATCH userspace v2 4/4] Makefile: always build with -fno-common Ondrej Mosnacek
@ 2020-01-23 18:26   ` jwcart2
  2020-01-28  9:54   ` Petr Lautrbach
  1 sibling, 0 replies; 10+ messages in thread
From: jwcart2 @ 2020-01-23 18:26 UTC (permalink / raw)
  To: Ondrej Mosnacek, selinux

On 1/23/20 7:57 AM, Ondrej Mosnacek wrote:
> GCC 10 has it enabled by default and everything now builds OK with it,
> so add it to CFLAGS to avoid breaking the build in the future.
> 
> Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>

For all four patches,

Acked-by: James Carter <jwcart2@tycho.nsa.gov>

> ---
>   Makefile | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index c238dbc8..298cd2b7 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -16,7 +16,8 @@ else
>   		-Wstrict-prototypes \
>   		-Wundef \
>   		-Wunused \
> -		-Wwrite-strings
> +		-Wwrite-strings \
> +		-fno-common
>   endif
>   
>   ifneq ($(DESTDIR),)
> 


-- 
James Carter <jwcart2@tycho.nsa.gov>
National Security Agency

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH userspace v2 0/4] Fix build with -fno-common
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
                   ` (3 preceding siblings ...)
  2020-01-23 12:57 ` [PATCH userspace v2 4/4] Makefile: always build with -fno-common Ondrej Mosnacek
@ 2020-01-24 10:39 ` Jason Zaman
  2020-01-24 11:15   ` Ondrej Mosnacek
  2020-01-27 15:56 ` [Non-DoD Source] " jwcart2
  5 siblings, 1 reply; 10+ messages in thread
From: Jason Zaman @ 2020-01-24 10:39 UTC (permalink / raw)
  To: Ondrej Mosnacek; +Cc: selinux

On Thu, Jan 23, 2020 at 01:57:12PM +0100, Ondrej Mosnacek wrote:
> GCC 10 is going to enable -fno-common by default [1], so fix all build
> errors uncovered by it and add it to global CFLAGS to avoid introducing
> new bugs.

How far back does -fno-common go? Will this affect our minimum GCC
version at all? I assume it wont but figured I'd ask just in case.

-- Jason

> Changes in v2:
>  - remove also struct te_assert definition, which is also useless
>  - redo cil_mem_error_handler to match commit 4459d635b8f1 as suggested
>    by Jim Carter
> 
> Travis build: [2]
> 
> [1] https://gcc.gnu.org/gcc-10/porting_to.html#common
> [2] https://travis-ci.org/WOnder93/selinux/builds/640875119
> 
> Ondrej Mosnacek (4):
>   libsepol: fix CIL_KEY_* build errors with -fno-common
>   libsepol: remove leftovers of cil_mem_error_handler
>   checkpolicy: remove unused te_assertions
>   Makefile: always build with -fno-common
> 
>  Makefile                        |   3 +-
>  checkpolicy/checkpolicy.h       |  14 --
>  libsepol/cil/src/cil.c          | 162 ++++++++++++++++
>  libsepol/cil/src/cil_internal.h | 322 ++++++++++++++++----------------
>  libsepol/cil/src/cil_mem.h      |   1 -
>  libsepol/cil/src/cil_strpool.c  |   8 +-
>  6 files changed, 329 insertions(+), 181 deletions(-)
> 
> -- 
> 2.24.1
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH userspace v2 0/4] Fix build with -fno-common
  2020-01-24 10:39 ` [PATCH userspace v2 0/4] Fix " Jason Zaman
@ 2020-01-24 11:15   ` Ondrej Mosnacek
  0 siblings, 0 replies; 10+ messages in thread
From: Ondrej Mosnacek @ 2020-01-24 11:15 UTC (permalink / raw)
  To: Jason Zaman; +Cc: SElinux list

On Fri, Jan 24, 2020 at 11:39 AM Jason Zaman <jason@perfinion.com> wrote:
> On Thu, Jan 23, 2020 at 01:57:12PM +0100, Ondrej Mosnacek wrote:
> > GCC 10 is going to enable -fno-common by default [1], so fix all build
> > errors uncovered by it and add it to global CFLAGS to avoid introducing
> > new bugs.
>
> How far back does -fno-common go? Will this affect our minimum GCC
> version at all? I assume it wont but figured I'd ask just in case.

Good question... It looks like it's been around since at least 1996:

https://github.com/gcc-mirror/gcc/commit/9493f1421183f7c39598629fe60d37c599dfe2af

(That doesn't seem to be the commit that introduced it, but I hope it
suffices as evidence :)

>
> -- Jason
>
> > Changes in v2:
> >  - remove also struct te_assert definition, which is also useless
> >  - redo cil_mem_error_handler to match commit 4459d635b8f1 as suggested
> >    by Jim Carter
> >
> > Travis build: [2]
> >
> > [1] https://gcc.gnu.org/gcc-10/porting_to.html#common
> > [2] https://travis-ci.org/WOnder93/selinux/builds/640875119
> >
> > Ondrej Mosnacek (4):
> >   libsepol: fix CIL_KEY_* build errors with -fno-common
> >   libsepol: remove leftovers of cil_mem_error_handler
> >   checkpolicy: remove unused te_assertions
> >   Makefile: always build with -fno-common
> >
> >  Makefile                        |   3 +-
> >  checkpolicy/checkpolicy.h       |  14 --
> >  libsepol/cil/src/cil.c          | 162 ++++++++++++++++
> >  libsepol/cil/src/cil_internal.h | 322 ++++++++++++++++----------------
> >  libsepol/cil/src/cil_mem.h      |   1 -
> >  libsepol/cil/src/cil_strpool.c  |   8 +-
> >  6 files changed, 329 insertions(+), 181 deletions(-)
> >
> > --
> > 2.24.1
> >
>


-- 
Ondrej Mosnacek <omosnace at redhat dot com>
Software Engineer, Security Technologies
Red Hat, Inc.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Non-DoD Source] [PATCH userspace v2 0/4] Fix build with -fno-common
  2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
                   ` (4 preceding siblings ...)
  2020-01-24 10:39 ` [PATCH userspace v2 0/4] Fix " Jason Zaman
@ 2020-01-27 15:56 ` jwcart2
  5 siblings, 0 replies; 10+ messages in thread
From: jwcart2 @ 2020-01-27 15:56 UTC (permalink / raw)
  To: Ondrej Mosnacek, selinux

On 1/23/20 7:57 AM, Ondrej Mosnacek wrote:
> GCC 10 is going to enable -fno-common by default [1], so fix all build
> errors uncovered by it and add it to global CFLAGS to avoid introducing
> new bugs.
> 
> Changes in v2:
>   - remove also struct te_assert definition, which is also useless
>   - redo cil_mem_error_handler to match commit 4459d635b8f1 as suggested
>     by Jim Carter
> 
> Travis build: [2]
> 
> [1] https://gcc.gnu.org/gcc-10/porting_to.html#common
> [2] https://travis-ci.org/WOnder93/selinux/builds/640875119
> 
> Ondrej Mosnacek (4):
>    libsepol: fix CIL_KEY_* build errors with -fno-common
>    libsepol: remove leftovers of cil_mem_error_handler
>    checkpolicy: remove unused te_assertions
>    Makefile: always build with -fno-common
> 
>   Makefile                        |   3 +-
>   checkpolicy/checkpolicy.h       |  14 --
>   libsepol/cil/src/cil.c          | 162 ++++++++++++++++
>   libsepol/cil/src/cil_internal.h | 322 ++++++++++++++++----------------
>   libsepol/cil/src/cil_mem.h      |   1 -
>   libsepol/cil/src/cil_strpool.c  |   8 +-
>   6 files changed, 329 insertions(+), 181 deletions(-)
> 

This whole series was applied.
Thanks,
Jim

-- 
James Carter <jwcart2@tycho.nsa.gov>
National Security Agency

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH userspace v2 4/4] Makefile: always build with -fno-common
  2020-01-23 12:57 ` [PATCH userspace v2 4/4] Makefile: always build with -fno-common Ondrej Mosnacek
  2020-01-23 18:26   ` [Non-DoD Source] " jwcart2
@ 2020-01-28  9:54   ` Petr Lautrbach
  1 sibling, 0 replies; 10+ messages in thread
From: Petr Lautrbach @ 2020-01-28  9:54 UTC (permalink / raw)
  To: Ondrej Mosnacek; +Cc: selinux


Ondrej Mosnacek <omosnace@redhat.com> writes:

> GCC 10 has it enabled by default and everything now builds OK with it,
> so add it to CFLAGS to avoid breaking the build in the future.
>
> Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
> ---
>  Makefile | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index c238dbc8..298cd2b7 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -16,7 +16,8 @@ else
>  		-Wstrict-prototypes \
>  		-Wundef \
>  		-Wunused \
> -		-Wwrite-strings
> +		-Wwrite-strings \
> +		-fno-common
>  endif
>  
>  ifneq ($(DESTDIR),)


This change applies only when you run a build from root directory.
Would it make sense to propagate it also to libsepol/src/Makefile and
checkpolicy/Makefile so it's used when users builds components from
released tar balls?





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-01-28  9:54 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-23 12:57 [PATCH userspace v2 0/4] Fix build with -fno-common Ondrej Mosnacek
2020-01-23 12:57 ` [PATCH userspace v2 1/4] libsepol: fix CIL_KEY_* build errors " Ondrej Mosnacek
2020-01-23 12:57 ` [PATCH userspace v2 2/4] libsepol: remove leftovers of cil_mem_error_handler Ondrej Mosnacek
2020-01-23 12:57 ` [PATCH userspace v2 3/4] checkpolicy: remove unused te_assertions Ondrej Mosnacek
2020-01-23 12:57 ` [PATCH userspace v2 4/4] Makefile: always build with -fno-common Ondrej Mosnacek
2020-01-23 18:26   ` [Non-DoD Source] " jwcart2
2020-01-28  9:54   ` Petr Lautrbach
2020-01-24 10:39 ` [PATCH userspace v2 0/4] Fix " Jason Zaman
2020-01-24 11:15   ` Ondrej Mosnacek
2020-01-27 15:56 ` [Non-DoD Source] " jwcart2

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).