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 5:01 PM James Carter <jwcart2@xxxxxxxxx> wrote:
>
> 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>
>

Merged.
Thanks,
Jim

> > > ---
> > > 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