On Sat, Dec 29, 2018 at 07:52:42PM -0500, Ted Unangst wrote: > Would "character value (%d) out of range" be clearer? > Also, I think you should add an (unsigned char) cast
uudecode: in: out: character value (159) out of range [33-96] better? Index: usr.bin/uudecode/uudecode.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/usr.bin/uudecode/uudecode.c,v retrieving revision 1.23 diff -u -p -r1.23 uudecode.c --- usr.bin/uudecode/uudecode.c 3 Jan 2016 14:43:20 -0000 1.23 +++ usr.bin/uudecode/uudecode.c 30 Dec 2018 11:17:53 -0000 @@ -359,9 +359,9 @@ uu_decode(void) #define DEC(c) (((c) - ' ') & 077) /* single character decode */ #define IS_DEC(c) ( (((c) - ' ') >= 0) && (((c) - ' ') <= 077 + 1) ) -#define OUT_OF_RANGE do { \ - warnx("%s: %s: character out of range: [%d-%d]", \ - infile, outfile, 1 + ' ', 077 + ' ' + 1); \ +#define OUT_OF_RANGE(c) do { \ + warnx("%s: %s: character value (%d) out of range [%d-%d]", \ + infile, outfile, (unsigned char)(c), 1 + ' ', 077 + ' ' + 1); \ return (1); \ } while (0) @@ -374,10 +374,14 @@ uu_decode(void) break; for (++p; i > 0; p += 4, i -= 3) if (i >= 3) { - if (!(IS_DEC(*p) && IS_DEC(*(p + 1)) && - IS_DEC(*(p + 2)) && IS_DEC(*(p + 3)))) - OUT_OF_RANGE; - + if (!IS_DEC(*p)) + OUT_OF_RANGE(*p); + if (!IS_DEC(*(p + 1))) + OUT_OF_RANGE(*(p + 1)); + if (!IS_DEC(*(p + 2))) + OUT_OF_RANGE(*(p + 2)); + if (!IS_DEC(*(p + 3))) + OUT_OF_RANGE(*(p + 3)); ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4; putc(ch, outfp); ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2; @@ -387,23 +391,26 @@ uu_decode(void) } else { if (i >= 1) { - if (!(IS_DEC(*p) && IS_DEC(*(p + 1)))) - OUT_OF_RANGE; + if (!IS_DEC(*p)) + OUT_OF_RANGE(*p); + if (!IS_DEC(*(p + 1))) + OUT_OF_RANGE(*(p + 1)); ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4; putc(ch, outfp); } if (i >= 2) { - if (!(IS_DEC(*(p + 1)) && - IS_DEC(*(p + 2)))) - OUT_OF_RANGE; - + if (!IS_DEC(*(p + 1))) + OUT_OF_RANGE(*(p + 1)); + if (!IS_DEC(*(p + 2))) + OUT_OF_RANGE(*(p + 2)); ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2; putc(ch, outfp); } if (i >= 3) { - if (!(IS_DEC(*(p + 2)) && - IS_DEC(*(p + 3)))) - OUT_OF_RANGE; + if (!IS_DEC(*(p + 2))) + OUT_OF_RANGE(*(p + 2)); + if (!IS_DEC(*(p + 3))) + OUT_OF_RANGE(*(p + 3)); ch = DEC(p[2]) << 6 | DEC(p[3]); putc(ch, outfp); }