]> granicus.if.org Git - strace/commitdiff
net.c: fix printing raw data of socket addresses
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 22 Jun 2016 23:56:24 +0000 (23:56 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 23 Jun 2016 01:11:35 +0000 (01:11 +0000)
* net.c (print_sockaddr): When printing socket address raw data, read
exactly the number of data bytes specified for the socket addess.

net.c

diff --git a/net.c b/net.c
index 6413c2c70038345f666f206a3a2fb60e8f793515..938b212653dba4f94a293f3fc9a701109be4a6b6 100644 (file)
--- a/net.c
+++ b/net.c
@@ -267,8 +267,11 @@ print_sockaddr(struct tcb *tcp, const void *const buf, const int addrlen)
                    && sa_printers[sa->sa_family]) {
                        sa_printers[sa->sa_family](buf, addrlen);
                } else {
+                       const char *const data = buf + sizeof(sa->sa_family);
+                       const int datalen = addrlen - sizeof(sa->sa_family);
+
                        tprints("sa_data=");
-                       print_quoted_string(sa->sa_data, sizeof(sa->sa_data), 0);
+                       print_quoted_string(data, datalen, 0);
                }
        }