Re: [PATCH] libselinux: Fix security_get_boolean_names build error

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

 



On Wed, Jul 3, 2019 at 5:22 PM Richard Haines
<richard_c_haines@xxxxxxxxxxxxxx> wrote:
>
> When running 'make' from libselinux on Fedora 30 (gcc 9.1.1) the
> following error is reported:
>
> bute=const -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wstrict-overflow=5
> -I../include -D_GNU_SOURCE  -DNO_ANDROID_BACKEND  -c -o booleans.o
> booleans.c
> booleans.c: In function ‘security_get_boolean_names’:
> booleans.c:39:5: error: assuming signed overflow does not occur when
> changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Werror=strict-overflow]
>   39 | int security_get_boolean_names(char ***names, int *len)
>       |    ^~~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> make[1]: *** [Makefile:171: booleans.o] Error 1
>
> This is caused by the '--i' in the: 'for (--i; i >= 0; --i)' loop.
>
> Signed-off-by: Richard Haines <richard_c_haines@xxxxxxxxxxxxxx>
> ---
>  libselinux/src/booleans.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/libselinux/src/booleans.c b/libselinux/src/booleans.c
> index ab1e0754..882a5dca 100644
> --- a/libselinux/src/booleans.c
> +++ b/libselinux/src/booleans.c
> @@ -81,8 +81,13 @@ int security_get_boolean_names(char ***names, int *len)
>         free(namelist);
>         return rc;
>        bad_freen:
> -       for (--i; i >= 0; --i)
> +       if (i == 0)
> +               goto bad_freen1;
> +       else if (i > 0)
> +               --i;
> +       for (; i >= 0; --i)
>                 free(n[i]);
> +bad_freen1:
>         free(n);
>        bad:
>         goto out;
> --
> 2.21.0
>

Hi,
Thanks for your patch. It looks more complicated than it should be.
Why do you introduce a new label instead of a simpler if statement?
For example I think of this code (I have not tested it and it may
contain issues):

bad_freen:
    if (i > 0) {
        for (--i; i >= 0; --i)
            free(n[i]);
    }
    free(n);

>From my point of view, this would be easier to maintain. If you have a
good reason for using a new goto label, please add some sentences
about this in the patch description or/and in a comment next to the
modified lines.

Thanks,
Nicolas




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

  Powered by Linux