projects/linux·commit d0eec99c

hexdump: don't print bytes with bit 7 set

d0eec99c · Randy Dunlap <[email protected]> · 2007-11-28 16:21:46 -08:00

As Herbert Xu pointed out, bytes (chars) with bit 7 (0x80) set are true
with isprint() but they may not be isascii() but be Unicode instead, so
don't try to print them in hex dumps.

Signed-off-by: Randy Dunlap <[email protected]>
Cc: Herbert Xu <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
d0eec99ce50baa5cc2ac02363cdb2a771ed4e1e2
Parents
6454d1f9

Changes

1 files changed · +2 −1

FileStatusAddDelContent
lib/hexdump.cmodified+2−1View file

lib/hexdump.c

View file
diff --git a/lib/hexdump.c b/lib/hexdump.c
index bd5edae..3435465 100644
--- a/lib/hexdump.c
+++ b/lib/hexdump.c
@@ -106,7 +106,8 @@ void hex_dump_to_buffer(const void *buf, size_t len, int rowsize,
while (lx < (linebuflen - 1) && lx < (ascii_column - 1))
linebuf[lx++] = ' ';
for (j = 0; (j < rowsize) && (j < len) && (lx + 2) < linebuflen; j++)
- linebuf[lx++] = isprint(ptr[j]) ? ptr[j] : '.';
+ linebuf[lx++] = (isascii(ptr[j]) && isprint(ptr[j])) ? ptr[j]
+ : '.';
nil:
linebuf[lx++] = '\0';
}