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