aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2015-07-09 13:47:19 +1000
committerDavid Gibson <david@gibson.dropbear.id.au>2015-07-09 13:47:19 +1000
commite5e6df7c37f7de13af33a3096e9c66127bb75d15 (patch)
tree82d6007cf27757553858ce0a4a9c8ede2625a8b4
parent067829ea5fa9a6d22d4d09fa38ffbef16d21de78 (diff)
downloaddtc-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.dts1
-rw-r--r--util.c2
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 {
};
};
diff --git a/util.c b/util.c
index 9d65226..cbb945b 100644
--- a/util.c
+++ b/util.c
@@ -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 ? " " : "");