Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jan 1999 15:24:35 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        archie@whistle.com, dillon@apollo.backplane.com
Cc:        current@FreeBSD.ORG
Subject:   Re: kern/subr_scanf array index of signed char
Message-ID:  <199901280424.PAA01617@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>:Matthew Dillon writes:
>:>                                         goto match_failure;
>:>                         } else {
>:>                                 p0 = p = va_arg(ap, char *);
>:> -                               while (ccltab[*inp]) {
>:> +                               while (ccltab[(int)(unsigned char)*inp]) {
>:>                                         inr--;
>:>                                         *p++ = *inp++;
>:>                                         if (--width == 0)
>:
>:Just curious.. why do you need the "(int)" cast?
>:
>:-Archie
>
>    Actually, it could very well be that I don't.  I didn't want to spend
>    the time to check to see if the compiler warned on unsigned-char array
>    indexes.  You can change it back if unsigned char array indexes do not
>    produce a warning.

Sloppy thinking.  How would you know if you fixed the bug unless you checked
that you fixed the bug instead of breaking the warning?  The bug was that
on systems with signed chars, *inp gave negative array indexes if the
caller passes a format string with negative characters in certain positions.
There are still lots of related isfoo(*inp) bugs.  All these bugs are more
serious in the userland.

Bruce

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901280424.PAA01617>