diff options
author | Jett Rink <jettrink@chromium.org> | 2020-01-06 11:35:10 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-09 20:44:16 +0000 |
commit | 825b3cec015cc2d33d24762370b77a91ae5e396c (patch) | |
tree | a5ce3a8405b5e37c9c73d72fc505eae0a1129691 /util | |
parent | faac542536136a7ac4bd1c6cd52e94924b44779e (diff) | |
download | chrome-ec-825b3cec015cc2d33d24762370b77a91ae5e396c.tar.gz |
cbi: fix print of 32-bit int value in ectool
The ectool tool only prints the lower 8-bits as an integer.
BRANCH=none
BUG=none
TEST=ectool prints 32-bit integer value correctly
Change-Id: Idf05833ad8c0a2f2bb0ad42fd74b86e23987a98e
Signed-off-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1988705
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/ectool.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/util/ectool.c b/util/ectool.c index fca417d6a3..ac2bd878d5 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -7475,8 +7475,8 @@ static int cmd_cbi(int argc, char *argv[]) if (!strcasecmp(argv[1], "get")) { struct ec_params_get_cbi p = { 0 }; - uint8_t *r; int i; + p.tag = tag; if (argc > 3) { p.flag = strtol(argv[3], &e, 0); @@ -7495,17 +7495,25 @@ static int cmd_cbi(int argc, char *argv[]) fprintf(stderr, "Invalid size: %d\n", rv); return -1; } - r = ec_inbuf; if (cmd_cbi_is_string_field(tag)) { - printf("%.*s", rv, (const char *)r); + printf("%.*s", rv, (const char *)ec_inbuf); } else { - if (rv <= sizeof(uint32_t)) - printf("As integer: %u (0x%x)\n", r[0], r[0]); + const uint8_t * const buffer = ec_inbuf; + + if (rv <= sizeof(uint32_t)) { + uint32_t int_value = 0; + + for (i = 0; i < rv; i++) + int_value |= buffer[i] << (i * 8); + + printf("As uint: %u (0x%x)\n", int_value, + int_value); + } printf("As binary:"); for (i = 0; i < rv; i++) { if (i % 32 == 31) printf("\n"); - printf(" %02x", r[i]); + printf(" %02x", buffer[i]); } } printf("\n"); |