Re: [PATCH] libsemanage: user_base_parse: prevent OOB read on truncated config

Stephen Smalley <[email protected]> Tue, 21 Jul 2026 08:46:32 -0400
Newsgroups org.kernel.vger.selinux
Message-ID <CAEjxPJ7zTURaQ1eLCfd8bfGALpWgGvvuiXXuvuYg2MQKifqevA@mail.gmail.com>
On Wed, Jul 15, 2026 at 12:58 PM Stephen Smalley
<[email protected]> wrote:
>
> If the configuration file happens to be truncated after the role name
> on the last line with no trailing newline, semicolon, or closing
> bracket, user_base_parse() will incorrectly advance the pointer beyond
> the end of the buffer and dereference it. Only advance the pointer
> when a delimiter is actually consumed.
>
> Signed-off-by: Stephen Smalley <[email protected]>

Merged.

> ---
>  libsemanage/src/users_base_file.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libsemanage/src/users_base_file.c b/libsemanage/src/users_base_file.c
> index 4aa2266b..05904b3e 100644
> --- a/libsemanage/src/users_base_file.c
> +++ b/libsemanage/src/users_base_file.c
> @@ -115,7 +115,8 @@ static int user_base_parse(semanage_handle_t *handle, parse_info_t *info,
>                         info->ptr++;
>
>                 delim = *(info->ptr);
> -               *(info->ptr)++ = '\0';
> +               if (delim)
> +                       *(info->ptr)++ = '\0';
>
>                 if (semanage_user_base_add_role(handle, user, start) < 0)
>                         goto err;
> --
> 2.55.0
>