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