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);
                                }

Reply via email to