diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2015-07-09 13:47:19 +1000 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2015-07-09 13:47:19 +1000 |
commit | e5e6df7c37f7de13af33a3096e9c66127bb75d15 (patch) | |
tree | 82d6007cf27757553858ce0a4a9c8ede2625a8b4 | |
parent | 067829ea5fa9a6d22d4d09fa38ffbef16d21de78 (diff) | |
download | dtc-e5e6df7c37f7de13af33a3096e9c66127bb75d15.zip dtc-e5e6df7c37f7de13af33a3096e9c66127bb75d15.tar.gz dtc-e5e6df7c37f7de13af33a3096e9c66127bb75d15.tar.bz2 |
fdtdump: Fix bug printing bytestrings with negative values
On systems where 'char' is signed, fdtdump will currently print the wrong
thing on properties containing bytestring values with "negative" bytes
(that is with values from 0x80..0xff). The fdtdump testcase is extended
to cover this case too.
This corrects the problem by forcing use of unsigned char - although this
is perhaps another indication that fdtdump is a buggy hack and if you want
to do real work you should use dtc -O dts.
Reported-by: Igor Prusov <Igor.V.Prusov@mcst.ru>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | tests/fdtdump.dts | 1 | ||||
-rw-r--r-- | util.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/tests/fdtdump.dts b/tests/fdtdump.dts index b9d917b..b83b7df 100644 --- a/tests/fdtdump.dts +++ b/tests/fdtdump.dts @@ -23,6 +23,7 @@ randomnode { string = "foo", "stuff"; bytes = [61 62 63 64 65]; + nbytes = [80 ff]; child { }; }; @@ -349,7 +349,6 @@ int utilfdt_decode_type(const char *fmt, int *type, int *size) void utilfdt_print_data(const char *data, int len) { int i; - const char *p = data; const char *s; /* no data, don't print */ @@ -376,6 +375,7 @@ void utilfdt_print_data(const char *data, int len) i < (len - 1) ? " " : ""); printf(">"); } else { + const unsigned char *p = (const unsigned char *)data; printf(" = ["); for (i = 0; i < len; i++) printf("%02x%s", *p++, i < len - 1 ? " " : ""); |