From a27ff267f0481dfcd0b817e88d7763e5bea9242a Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Wed, 9 Jun 2021 01:21:46 +0100 Subject: [PATCH] hexdump: correctly display signed single byte integers When using the format string '/1 "%d"', the byte did not display as a signed integer as expected, it was interpreted as unsigned. --- text-utils/hexdump-display.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/text-utils/hexdump-display.c b/text-utils/hexdump-display.c index 695b4724b..bc92bd0ca 100644 --- a/text-utils/hexdump-display.c +++ b/text-utils/hexdump-display.c @@ -145,13 +145,15 @@ print(struct hexdump_pr *pr, unsigned char *bp) { } case F_INT: { + char cval; /* int8_t */ short sval; /* int16_t */ int ival; /* int32_t */ long long Lval; /* int64_t, int64_t */ switch(pr->bcnt) { case 1: - printf(pr->fmt, (unsigned long long) *bp); + memmove(&cval, bp, sizeof(cval)); + printf(pr->fmt, (unsigned long long) cval); break; case 2: memmove(&sval, bp, sizeof(sval));