diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2022-08-10 11:57:40 +0200 |
---|---|---|
committer | Eugene Syromyatnikov <evgsyr@gmail.com> | 2022-08-11 14:34:17 +0200 |
commit | 58f134b650133e0e8dff13a27957f2fcc2718f61 (patch) | |
tree | aa6e02a9745197652c94cf2a4f0758b0d19c8ac7 | |
parent | 76af385a04f398ada97ef4d2b555045cba443da8 (diff) | |
download | strace-58f134b650133e0e8dff13a27957f2fcc2718f61.tar.gz |
net: print unexpectedly short integer sockopts in hex
Since it makes little sence to print ASCII character codes when we know
that the bytes are part of a number.
* src/net.c (print_get_error, print_txrehash, print_getsockopt): Use
printstr_ex with QUOTE_FORCE_HEX parameter instead of printstrn.
* tests/sockopt-sol_socket.c: Update expected output.
-rw-r--r-- | src/net.c | 6 | ||||
-rw-r--r-- | tests/sockopt-sol_socket.c | 2 |
2 files changed, 5 insertions, 3 deletions
@@ -696,7 +696,7 @@ print_get_error(struct tcb *const tcp, const kernel_ulong_t addr, unsigned int err; if (len < sizeof(err)) { - printstrn(tcp, addr, len); + printstr_ex(tcp, addr, len, QUOTE_FORCE_HEX); return; } @@ -719,7 +719,7 @@ print_txrehash(struct tcb *const tcp, const kernel_ulong_t addr, const int len) if (entering(tcp)) printaddr(addr); else - printstrn(tcp, addr, len); + printstr_ex(tcp, addr, len, QUOTE_FORCE_HEX); return; } @@ -872,7 +872,7 @@ print_getsockopt(struct tcb *const tcp, const unsigned int level, if (rlen >= (int) sizeof(int)) printnum_int(tcp, addr, "%d"); else - printstrn(tcp, addr, rlen); + printstr_ex(tcp, addr, rlen, QUOTE_FORCE_HEX); return; } break; diff --git a/tests/sockopt-sol_socket.c b/tests/sockopt-sol_socket.c index 7aa58cb15..4907636fa 100644 --- a/tests/sockopt-sol_socket.c +++ b/tests/sockopt-sol_socket.c @@ -253,6 +253,8 @@ main(void) printf("g%s", pfx_str); if (rc < 0) printf("%p", val); + else if (names[i].optsz) + print_quoted_hex(val, sizeof(*val) - 1); else print_quoted_memory(val, sizeof(*val) - 1); printf(", [%d", (int) sizeof(*val) - 1); |