Re: [PATCH v2] libselinux/utils: drop reachable assert in sefcontext_compile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 3, 2024 at 11:24 AM Petr Lautrbach <lautrbach@xxxxxxxxxx> wrote:
>
> Christian Göttsche <cgoettsche@xxxxxxxxxxxxx> writes:
>
> > From: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
> >
> > The two asserts following qsort(3) where useful during development to
> > ensure the comparison function and the corresponding pointer handling
> > were correct.  They however do not take into account an empty file
> > context definition file containing no definitions and thus `stab->nel`
> > being NULL.  Drop the two asserts.
> >
> > Also return early to not depend on whether calloc(3) called with a size
> > of zero returns NULL or a special value.
> >
> > Reported-by: Petr Lautrbach <lautrbach@xxxxxxxxxx>
> > Closes: https://lore.kernel.org/selinux/87jzchqck5.fsf@xxxxxxxxxx/
> > Fixes: 92306daf ("libselinux: rework selabel_file(5) database")
> > Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
>
> Works for me. Thanks!
>
> Tested-by: Petr Lautrbach <lautrbach@xxxxxxxxxx>
>

Acked-by: James Carter <jwcart2@xxxxxxxxx>

> > ---
> > v2: fix condition from not zero to equal to zero
> > Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
> > ---
> >  libselinux/utils/sefcontext_compile.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/libselinux/utils/sefcontext_compile.c b/libselinux/utils/sefcontext_compile.c
> > index 23d31274..e5da51ea 100644
> > --- a/libselinux/utils/sefcontext_compile.c
> > +++ b/libselinux/utils/sefcontext_compile.c
> > @@ -188,6 +188,9 @@ static int write_sidtab(FILE *bin_file, const struct sidtab *stab)
> >       if (len != 1)
> >               return -1;
> >
> > +     if (stab->nel == 0)
> > +             return 0;
> > +
> >       /* sort entries by id */
> >       sids = calloc(stab->nel, sizeof(*sids));
> >       if (!sids)
> > @@ -203,8 +206,6 @@ static int write_sidtab(FILE *bin_file, const struct sidtab *stab)
> >       }
> >       assert(index == stab->nel);
> >       qsort(sids, stab->nel, sizeof(struct security_id), security_id_compare);
> > -     assert(sids[0].id == 1);
> > -     assert(sids[stab->nel - 1].id == stab->nel);
> >
> >       /* write raw contexts sorted by id */
> >       for (uint32_t i = 0; i < stab->nel; i++) {
> > --
> > 2.45.2
>
>





[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux