From: Dmitry V. Levin Date: Sat, 24 Jan 2015 20:58:23 +0000 (+0000) Subject: sock_ioctl: quote network interface names X-Git-Tag: v4.10~165 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=81e4515ad9778c3ea3c42d7afa4ed0cbf82da04a;p=strace sock_ioctl: quote network interface names * sock.c (print_ifname): New function. (sock_ioctl): Use it to quote ifr_name, ifru_newname, and ifru_slave. --- diff --git a/sock.c b/sock.c index dfdb10a7..ef6def45 100644 --- a/sock.c +++ b/sock.c @@ -51,6 +51,12 @@ print_addr(struct tcb *tcp, long addr, struct ifreq *ifr) printstr(tcp, addr, sizeof(ifr->ifr_addr.sa_data)); } +static void +print_ifname(const char *ifname) +{ + print_quoted_string(ifname, IFNAMSIZ + 1, QUOTE_0_TERMINATED); +} + int sock_ioctl(struct tcb *tcp, const unsigned int code, long arg) { @@ -71,10 +77,13 @@ sock_ioctl(struct tcb *tcp, const unsigned int code, long arg) case SIOCSIFNAME: if (umove(tcp, tcp->u_arg[2], &ifr) < 0) tprintf(", %#lx", tcp->u_arg[2]); - else - tprintf(", {ifr_name=\"%.*s\", ifr_newname=\"%.*s\"}", - IFNAMSIZ, ifr.ifr_name, - IFNAMSIZ, ifr.ifr_newname); + else { + tprints(", {ifr_name="); + print_ifname(ifr.ifr_name); + tprints(", ifr_newname="); + print_ifname(ifr.ifr_newname); + tprints("}"); + } break; } return 0; @@ -142,15 +151,18 @@ sock_ioctl(struct tcb *tcp, const unsigned int code, long arg) tprintf(", {ifr_index=%d, ifr_name=???}", ifr.ifr_ifindex); } else { - tprintf(", {ifr_name=\"%.*s\", ???}", - IFNAMSIZ, ifr.ifr_name); + tprints(", {ifr_name="); + print_ifname(ifr.ifr_name); + tprints(", ???}"); } } else if (code == SIOCGIFNAME) { - tprintf(", {ifr_index=%d, ifr_name=\"%.*s\"}", - ifr.ifr_ifindex, IFNAMSIZ, ifr.ifr_name); + tprintf(", {ifr_index=%d, ifr_name=", ifr.ifr_ifindex); + print_ifname(ifr.ifr_name); + tprints("}"); } else { - tprintf(", {ifr_name=\"%.*s\", ", - IFNAMSIZ, ifr.ifr_name); + tprints(", {ifr_name="); + print_ifname(ifr.ifr_name); + tprints(", "); switch (code) { case SIOCGIFINDEX: tprintf("ifr_index=%d", ifr.ifr_ifindex); @@ -205,7 +217,8 @@ sock_ioctl(struct tcb *tcp, const unsigned int code, long arg) break; case SIOCGIFSLAVE: case SIOCSIFSLAVE: - tprintf("ifr_slave=\"%s\"", ifr.ifr_slave); + tprints("ifr_slave="); + print_ifname(ifr.ifr_slave); break; case SIOCGIFTXQLEN: case SIOCSIFTXQLEN: @@ -251,8 +264,9 @@ sock_ioctl(struct tcb *tcp, const unsigned int code, long arg) for (i = 0; i < nifra; ++i ) { if (i > 0) tprints(", "); - tprintf("{\"%.*s\", {", - IFNAMSIZ, ifra[i].ifr_newname); + tprints("{"); + print_ifname(ifra[i].ifr_newname); + tprints(", {"); if (verbose(tcp)) { printxval(addrfams, ifra[i].ifr_addr.sa_family,