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

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

 



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






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

  Powered by Linux