From ecb351f1d58f0be6bbaea73786b1c9a1b9d16151 Mon Sep 17 00:00:00 2001 From: FRIGN Date: Mon, 26 Oct 2015 12:52:14 +0100 Subject: [PATCH] Properly parse numbers in od(1) Previously, it'd drop right through in the number case and return crazy-long numbers (like 28 for L), resulting in unexpected behaviour. --- od.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/od.c b/od.c index 0c361e2..4b3023b 100644 --- a/od.c +++ b/od.c @@ -224,11 +224,10 @@ main(int argc, char *argv[]) case 'x': t->format = *s; /* todo: allow multiple digits */ - if (*(s+1) > '0' || *(s+1) <= '9') { - t->len = *(s+1) - '0'; - s++; + if (*(s+1) > '0' && *(s+1) <= '9') { + t->len = *(++s) - '0'; } else { - switch (*(s + 1)) { + switch (*(++s)) { case 'C': t->len = sizeof(char); break;