]> granicus.if.org Git - strace/commitdiff
net.c: skip details of too short socket addresses
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 22 Jun 2016 23:40:56 +0000 (23:40 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 23 Jun 2016 01:10:17 +0000 (01:10 +0000)
* net.c (print_sockaddr): Print socket address details only when
the address size is greater than sizeof(struct sockaddr.sa_family).
(print_sockaddr_data_un): Remove handling of addrlen == 2.
* tests/net-y-unix.c (main): Update expected pattern.
* tests/net-yy-unix.c (main): Likewise.
* tests/net.expected: Likewise.

net.c
tests/net-y-unix.c
tests/net-yy-unix.c
tests/net.expected

diff --git a/net.c b/net.c
index 517ed23c16282c176a3a70673dfcce1f2c69746f..6413c2c70038345f666f206a3a2fb60e8f793515 100644 (file)
--- a/net.c
+++ b/net.c
@@ -107,15 +107,13 @@ print_sockaddr_data_un(const void *const buf, const int addrlen)
 {
        const struct sockaddr_un *const sa_un = buf;
 
-       if (addrlen == 2) {
-               tprints("NULL");
-       } else if (sa_un->sun_path[0]) {
-               tprints("sun_path=");
+       tprints("sun_path=");
+       if (sa_un->sun_path[0]) {
                print_quoted_string(sa_un->sun_path,
                                    sizeof(sa_un->sun_path) + 1,
                                    QUOTE_0_TERMINATED);
        } else {
-               tprints("sun_path=@");
+               tprints("@");
                print_quoted_string(sa_un->sun_path + 1,
                                    sizeof(sa_un->sun_path),
                                    QUOTE_0_TERMINATED);
@@ -258,17 +256,20 @@ void
 print_sockaddr(struct tcb *tcp, const void *const buf, const int addrlen)
 {
        const struct sockaddr *const sa = buf;
-       const unsigned short family = sa->sa_family;
 
        tprints("{sa_family=");
-       printxval(addrfams, family, "AF_???");
-       tprints(", ");
+       printxval(addrfams, sa->sa_family, "AF_???");
 
-       if (family < ARRAY_SIZE(sa_printers) && sa_printers[family]) {
-               sa_printers[family](buf, addrlen);
-       } else {
-               tprints("sa_data=");
-               print_quoted_string(sa->sa_data, sizeof(sa->sa_data), 0);
+       if (addrlen > (int) sizeof(sa->sa_family)) {
+               tprints(", ");
+
+               if (sa->sa_family < ARRAY_SIZE(sa_printers)
+                   && sa_printers[sa->sa_family]) {
+                       sa_printers[sa->sa_family](buf, addrlen);
+               } else {
+                       tprints("sa_data=");
+                       print_quoted_string(sa->sa_data, sizeof(sa->sa_data), 0);
+               }
        }
 
        tprints("}");
index 499ae8ea22d2438b45ae7a8e48c211ef0fc269c9..cb22c4382ca56e17f6b6fa92e467d63c7e233f7a 100644 (file)
@@ -107,7 +107,7 @@ main(int ac, const char **av)
        if (accept_fd < 0)
                perror_msg_and_fail("accept");
        unsigned long accept_inode = inode_of_sockfd(accept_fd);
-       printf("accept(%d<socket:[%lu]>, {sa_family=AF_UNIX, NULL}"
+       printf("accept(%d<socket:[%lu]>, {sa_family=AF_UNIX}"
               ", [%u]) = %d<socket:[%lu]>\n",
               listen_fd, listen_inode, (unsigned) *len,
               accept_fd, accept_inode);
index 78fc876d3ccdc8bddf5ec25b68a5dd9e65fa967a..7afdde1f5289b1f67fba78418c0e8c2816d7aa7c 100644 (file)
@@ -108,7 +108,7 @@ main(int ac, const char **av)
        if (accept_fd < 0)
                perror_msg_and_fail("accept");
        unsigned long accept_inode = inode_of_sockfd(accept_fd);
-       printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX, NULL}"
+       printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX}"
               ", [%u]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
               listen_fd, listen_inode, av[1], (unsigned) *len,
               accept_fd, accept_inode, connect_inode, av[1]);
index 03bb5c3006df24fb13b1ebaeb73fa38df10fb534..51d64a89f1cbf5c793b341e115849a0952632250 100644 (file)
@@ -3,5 +3,5 @@
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +bind\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +listen\(0, 5\) += 0
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +getsockname\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, \[19\]\) += 0
-[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept\(0, \{sa_family=AF_(LOCAL|UNIX|FILE), NULL\}, \[2\]\) += 1
+[1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +accept\(0, \{sa_family=AF_(LOCAL|UNIX|FILE)\}, \[2\]\) += 1
 [1-9][0-9]* +[0-9]+:[0-9]+:[0-9]+\.[0-9]+ +connect\(1, \{sa_family=AF_(LOCAL|UNIX|FILE), sun_path="net-local-stream"\}, 19\) += 0