[PATCH] libsepol: Check for embedded NUL when reading from policy file

James Carter <[email protected]> Wed, 22 Jul 2026 14:13:25 -0400
Newsgroups org.kernel.vger.selinux
Message-ID <[email protected]>
Check that data read from a policy file does not have an
embedded NUL to protect against maliciously crafted polcies.

Signed-off-by: James Carter <[email protected]>
---
 libsepol/src/services.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libsepol/src/services.c b/libsepol/src/services.c
index e8f0e622..3e8bd38b 100644
--- a/libsepol/src/services.c
+++ b/libsepol/src/services.c
@@ -1799,6 +1799,12 @@ int str_read(char **strp, struct policy_file *fp, size_t len)
 	if (rc)
 		return rc;
 
+	/* Check for an embedded NUL character */
+	if (memchr(str, '\0', len)) {
+		errno = EINVAL;
+		return -1;
+	}
+
 	str[len] = '\0';
 	return 0;
 }
-- 
2.55.0