Blame SOURCES/0022-libsepol-cil-More-strict-verification-of-constraint-.patch

71cd55
From e978e7692e16d6d8b801700d1dc5129ca31dfbad Mon Sep 17 00:00:00 2001
71cd55
From: James Carter <jwcart2@gmail.com>
71cd55
Date: Thu, 8 Apr 2021 13:32:11 -0400
71cd55
Subject: [PATCH] libsepol/cil: More strict verification of constraint leaf
71cd55
 expressions
71cd55
71cd55
In constraint expressions u1, u3, r1, r3, t1, and t3 are never
71cd55
allowed on the right side of an expression, but there were no checks
71cd55
to verify that they were not used on the right side. The result was
71cd55
that the expression "(eq t1 t1)" would be silently turned into
71cd55
"(eq t1 t2)" when the binary policy was created.
71cd55
71cd55
Verify that u1, u3, r1, r3, t1, and t3 are not used on the right
71cd55
side of a constraint expression.
71cd55
71cd55
Signed-off-by: James Carter <jwcart2@gmail.com>
71cd55
---
71cd55
 libsepol/cil/src/cil_verify.c | 8 +++++++-
71cd55
 1 file changed, 7 insertions(+), 1 deletion(-)
71cd55
71cd55
diff --git a/libsepol/cil/src/cil_verify.c b/libsepol/cil/src/cil_verify.c
71cd55
index 09e3daf94cc7..2707b6c97d15 100644
71cd55
--- a/libsepol/cil/src/cil_verify.c
71cd55
+++ b/libsepol/cil/src/cil_verify.c
71cd55
@@ -227,7 +227,13 @@ int cil_verify_constraint_leaf_expr_syntax(enum cil_flavor l_flavor, enum cil_fl
71cd55
 			}
71cd55
 		}
71cd55
 	} else {
71cd55
-		if (r_flavor == CIL_CONS_U2) {
71cd55
+		if (r_flavor == CIL_CONS_U1 || r_flavor == CIL_CONS_R1 || r_flavor == CIL_CONS_T1) {
71cd55
+			cil_log(CIL_ERR, "u1, r1, and t1 are not allowed on the right side\n");
71cd55
+			goto exit;
71cd55
+		} else if (r_flavor == CIL_CONS_U3 || r_flavor == CIL_CONS_R3 || r_flavor == CIL_CONS_T3) {
71cd55
+			cil_log(CIL_ERR, "u3, r3, and t3 are not allowed on the right side\n");
71cd55
+			goto exit;
71cd55
+		} else if (r_flavor == CIL_CONS_U2) {
71cd55
 			if (op != CIL_EQ && op != CIL_NEQ) {
71cd55
 				cil_log(CIL_ERR, "u2 on the right side must be used with eq or neq as the operator\n");
71cd55
 				goto exit;
71cd55
-- 
71cd55
2.32.0
71cd55