From: Dmitry V. Levin Date: Mon, 8 Oct 2007 23:31:19 +0000 (+0000) Subject: 2007-10-01 Dmitry V. Levin X-Git-Tag: v4.5.18~128 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b6c32f4598b84364472bc3febcb80ff3e475def8;p=strace 2007-10-01 Dmitry V. Levin * net.c (printsock): Output AF_UNIX socket address using printpathn() to avoid unprintable characters in output. Suggested by Neil Campbell. --- diff --git a/ChangeLog b/ChangeLog index 3a00e3be..67238f99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-10-01 Dmitry V. Levin + + * net.c (printsock): Output AF_UNIX socket address using + printpathn() to avoid unprintable characters in output. + Suggested by Neil Campbell. + 2007-10-01 Dmitry V. Levin * util.c (string_quote): Move quoting code from ... diff --git a/net.c b/net.c index 0085acbe..9fff3e6c 100644 --- a/net.c +++ b/net.c @@ -937,10 +937,7 @@ static const struct xlat af_packet_types[] = { void -printsock(tcp, addr, addrlen) -struct tcb *tcp; -long addr; -int addrlen; +printsock(struct tcb *tcp, long addr, int addrlen) { union { char pad[128]; @@ -970,13 +967,16 @@ int addrlen; tprintf("%#lx", addr); return; } - if ((addrlen<2) || (addrlen>sizeof(addrbuf))) - addrlen=sizeof(addrbuf); - if (umoven(tcp, addr, addrlen, (char*)&addrbuf) < 0) { + if (addrlen < 2 || addrlen > sizeof(addrbuf)) + addrlen = sizeof(addrbuf); + + memset(&addrbuf, 0, sizeof(addrbuf)); + if (umoven(tcp, addr, addrlen, addrbuf.pad) < 0) { tprintf("{...}"); return; } + addrbuf.pad[sizeof(addrbuf.pad) - 1] = '\0'; tprintf("{sa_family="); printxval(addrfams, addrbuf.sa.sa_family, "AF_???"); @@ -984,12 +984,14 @@ int addrlen; switch (addrbuf.sa.sa_family) { case AF_UNIX: - if (addrlen==2) { - tprintf(""); + if (addrlen == 2) { + tprintf("NULL"); } else if (addrbuf.sau.sun_path[0]) { - tprintf("path=\"%-.*s\"", addrlen-2, addrbuf.sau.sun_path); + tprintf("path="); + printstr(tcp, addr + 2, strlen(addrbuf.sau.sun_path)); } else { - tprintf("path=@%-.*s", addrlen-3, addrbuf.sau.sun_path+1); + tprintf("path=@"); + printstr(tcp, addr + 3, strlen(addrbuf.sau.sun_path + 1)); } break; case AF_INET: