Patch to improve behaviour in gnutls_x509_crl_set_version() when `char' is unsigned

Simon Josefsson simon at josefsson.org
Mon May 26 12:53:25 CEST 2008


Laurence Withers <l at lwithers.me.uk> writes:

> Hi,
>
> On some platforms, char can be unsigned by default (in my case I'm using gcc 
> 3.4.5 on arm). When that's the case, I noticed a compilation warning in 
> lib/x509/crl_write.c .
>
> The attached patch fixes the warning, but also slightly changes the way the 
> test is carried out.
>
> The documentation for the function states that the supplied version parameter 
> must be 1 or 2, and implies it can be higher but not 0. The patch explicitly 
> checks that version >= 1 without performing any arithmetic in a char type. If 
> the check fails, the function returns with GNUTLS_E_INVALID_REQUEST, which I 
> guess is the right thing to do. If the check succeeds, the previous behaviour 
> is used. However, a char value of 0 is never decremented, so there is never 
> any possibility of an overflow.
>
> If this behaviour isn't really wanted, and the exact previous semantics of the 
> function should be preserved (version 0 -> 0, version 1 -> 0, version 2 -> 1 
> etc.) then let me know and I'll rework the patch.

Hi!  Thanks for the report.  I think we need to preserve the old
behaviour for 0, so I reworked the patch slightly.

http://git.savannah.gnu.org/gitweb/?p=gnutls.git;a=commitdiff;h=513d06b388dcda5ae0200e607923dcd0f88f79f4

Did you notice any similar compilation warnings?  Which compilation
flags did you use?

/Simon






More information about the Gnutls-devel mailing list