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

Stephen Smalley <[email protected]> Thu, 23 Jul 2026 14:39:07 -0400
Newsgroups org.kernel.vger.selinux
Message-ID <CAEjxPJ4yGX0joHcb4kajTozQS6jM2ddVckZB4VeeVUzmCw9PBQ@mail.gmail.com>
On Wed, Jul 22, 2026 at 2:13 PM James Carter <[email protected]> wrote:
>
> Check that data read from a policy file does not have an
> embedded NUL to protect against maliciously crafted polcies.

policies

>
> Signed-off-by: James Carter <[email protected]>

Otherwise,
Acked-by: Stephen Smalley <[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
>