Possible bug in g10/g10.c

Christian Biere christianbiere at gmx.de
Thu Feb 23 18:39:17 CET 2006


Hi,

due to my siege against misuse of ctype functions I always stumble
over the compiler warnings in g10/g10.c. If I remember correctly, last
time I accepted that the compiler is at fault because there are
isascii() checks. Well, the compiler isn't really at fault if
isascii() doesn't resolve to something determinable at compile-time.
Actually, my <ctype.h> really uses a table-reference under some
circumstances, so the compiler is dead on. That was the prequel.

Here goes the main issue - taken from g10/g10.c:

    /* we only support printable text - therefore we enforce the use
     * of only printable characters (an empty value is valid) */
    for( s++; *s ; s++ ) {
	if ( isascii (*s) ) <<<<< Isn't there a '!' missing?
          highbit = 1;
	else if (iscntrl(*s)) { <<<< Not ASCII, crash likely
	    log_error(_("a notation value must not use"
			" any control characters\n") );
	    return;
	}
    }

The next lines amplify my impression that the above lines are buggy:

    if( highbit )   /* must use UTF8 encoding */
	sl = add_to_strlist2( notation_data, string, utf8_strings );
    else
	sl = add_to_strlist( notation_data, string );

-- 
Christian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 188 bytes
Desc: not available
Url : /pipermail/attachments/20060223/eb6de251/attachment.pgp


More information about the Gnupg-devel mailing list