]> granicus.if.org Git - strace/commitdiff
netlink: do not print extra braces around payloadless nlmsghdr
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 18 Jun 2017 21:43:39 +0000 (21:43 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 18 Jun 2017 21:43:39 +0000 (21:43 +0000)
* netlink.c (decode_nlmsghdr_with_payload): Print braces before
print_nlmsghdr and after decode_payload iff decode_payload is invoked.
* tests/netlink_audit.c (test_nlmsg_type): Update expected output.
* tests/netlink_netfilter.c: Likewise.
* tests/netlink_selinux.c: Likewise.
* tests/netlink_protocol.c (send_query): Likewise.
* tests/netlink_route.c (test_nlmsg_type, test_nlmsg_flags): Likewise.
* tests/netlink_sock_diag.c: Likewise.
* tests/netlink_xfrm.c: Likewise.

netlink.c
tests/netlink_audit.c
tests/netlink_netfilter.c
tests/netlink_protocol.c
tests/netlink_route.c
tests/netlink_selinux.c
tests/netlink_sock_diag.c
tests/netlink_xfrm.c

index 4bef9498aac2b52bedbe396aaba0c9f3e8689b9d..dc1a070d6cf76f6d4cfd9a34222d49beaac70431 100644 (file)
--- a/netlink.c
+++ b/netlink.c
@@ -342,19 +342,20 @@ decode_nlmsghdr_with_payload(struct tcb *const tcp,
                             const kernel_ulong_t addr,
                             const kernel_ulong_t len)
 {
-       tprints("{");
+       const unsigned int nlmsg_len =
+               nlmsghdr->nlmsg_len > len ? len : nlmsghdr->nlmsg_len;
+
+       if (nlmsg_len > NLMSG_HDRLEN)
+               tprints("{");
 
        family = print_nlmsghdr(tcp, fd, family, nlmsghdr);
 
-       unsigned int nlmsg_len =
-               nlmsghdr->nlmsg_len > len ? len : nlmsghdr->nlmsg_len;
        if (nlmsg_len > NLMSG_HDRLEN) {
                tprints(", ");
                decode_payload(tcp, fd, family, nlmsghdr, addr + NLMSG_HDRLEN,
                                                     nlmsg_len - NLMSG_HDRLEN);
+               tprints("}");
        }
-
-       tprints("}");
 }
 
 void
index e955c427ad47f6886a5ba86c3af1cf3d6a6f66b2..c13feeac05543ae13ae0739ea702ec3cd7cf03bf 100644 (file)
@@ -44,8 +44,8 @@ test_nlmsg_type(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=AUDIT_GET"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=AUDIT_GET"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
index 103ae95f1ae56887fa96dbb8e19741b61c94e2c3..0c64b108ff2fa74d7e9096014a0c7615a0f5a57d 100644 (file)
@@ -48,15 +48,15 @@ test_nlmsg_type(const int fd)
 # ifdef NFNL_MSG_BATCH_BEGIN
        nlh.nlmsg_type = NFNL_MSG_BATCH_BEGIN;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=NFNL_MSG_BATCH_BEGIN"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=NFNL_MSG_BATCH_BEGIN"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN,
               (unsigned) sizeof(nlh), sprintrc(rc));
@@ -64,8 +64,8 @@ test_nlmsg_type(const int fd)
 
        nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8);
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
index 9f796cf26a789c0455c903e9d6a5fed4ec3b1946..c2b40802cc23fd7fe9f5f1664aa66ff56931159e 100644 (file)
@@ -100,8 +100,8 @@ send_query(const int fd)
        /* a single message without data */
        req->nlh.nlmsg_len = sizeof(req->nlh);
        rc = sendto(fd, &req->nlh, sizeof(req->nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+       printf("sendto(%d, {len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+              ", seq=0, pid=0}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, req->nlh.nlmsg_len, NLM_F_DUMP,
               (unsigned) sizeof(req->nlh), sprintrc(rc));
 
@@ -116,8 +116,8 @@ send_query(const int fd)
        /* nlmsg_len < sizeof(struct nlmsghdr) */
        req->nlh.nlmsg_len = 8;
        rc = sendto(fd, req, sizeof(*req), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=0, pid=0}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+       printf("sendto(%d, {len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+              ", seq=0, pid=0}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, req->nlh.nlmsg_len, NLM_F_DUMP,
               (unsigned) sizeof(*req), sprintrc(rc));
 
@@ -165,8 +165,8 @@ send_query(const int fd)
        reqs->req2.nlh.nlmsg_len = 4;
        rc = sendto(fd, reqs, sizeof(*reqs), MSG_DONTWAIT, NULL, 0);
        printf("sendto(%d, [{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=0, pid=0}, \"abcd\"}, {{len=%u, type=NLMSG_NOOP"
-              ", flags=NLM_F_REQUEST|0x%x, seq=0, pid=0}}], %u"
+              ", seq=0, pid=0}, \"abcd\"}, {len=%u, type=NLMSG_NOOP"
+              ", flags=NLM_F_REQUEST|0x%x, seq=0, pid=0}], %u"
               ", MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, reqs->req1.nlh.nlmsg_len, NLM_F_DUMP,
               reqs->req2.nlh.nlmsg_len, NLM_F_DUMP,
@@ -192,8 +192,8 @@ send_query(const int fd)
        for (i = 0; i < DEFAULT_STRLEN; ++i) {
                if (i)
                        printf(", ");
-               printf("{{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-                      ", seq=%u, pid=0}}",
+               printf("{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+                      ", seq=%u, pid=0}",
                       msgs[i].nlmsg_len, NLM_F_DUMP, msgs[i].nlmsg_seq);
        }
        printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
@@ -281,8 +281,8 @@ test_nlmsgerr(const int fd)
        rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
        printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
               ", seq=0, pid=0}, {error=-EACCES"
-              ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
-              ", seq=%u, pid=%u}}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+              ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+              ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
               err->msg.nlmsg_seq, err->msg.nlmsg_pid,
               nlh->nlmsg_len, sprintrc(rc));
index 0e5c21095e21159b038bf50b11bd9ccdc702a083..71458d0f1c41385f54c429fb62815fea205762ad 100644 (file)
@@ -44,8 +44,8 @@ test_nlmsg_type(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=RTM_GETLINK"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=RTM_GETLINK"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
@@ -61,32 +61,32 @@ test_nlmsg_flags(const int fd)
        nlh.nlmsg_type = RTM_GETLINK;
        nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=RTM_GETLINK"
-              ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=RTM_GETLINK"
+              ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = RTM_DELACTION;
        nlh.nlmsg_flags = NLM_F_ROOT;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=RTM_DELACTION"
-              ", flags=NLM_F_ROOT, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=RTM_DELACTION"
+              ", flags=NLM_F_ROOT, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = RTM_NEWLINK;
        nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=RTM_NEWLINK"
-              ", flags=NLM_F_ECHO|NLM_F_REPLACE, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=RTM_NEWLINK"
+              ", flags=NLM_F_ECHO|NLM_F_REPLACE, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = RTM_DELLINK;
        nlh.nlmsg_flags = NLM_F_REPLACE;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=RTM_DELLINK"
-              ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=RTM_DELLINK"
+              ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, NLM_F_REPLACE,
               (unsigned) sizeof(nlh), sprintrc(rc));
index ef30badcf3013eb7c96d4c29807f1370d5356fd6..6a6652f8f04bfe1e7693f814f668c4db2b3db11b 100644 (file)
@@ -44,8 +44,8 @@ test_nlmsg_type(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=SELNL_MSG_SETENFORCE"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=SELNL_MSG_SETENFORCE"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
index e5b774ee8d5f31ce600ebd518def3b407dce82b1..26e43257b730ec6a90e7273c348e5c0b70dde2bb 100644 (file)
@@ -63,8 +63,8 @@ test_nlmsg_type(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=SOCK_DIAG_BY_FAMILY"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
@@ -80,8 +80,8 @@ test_nlmsg_flags(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=SOCK_DIAG_BY_FAMILY"
-              ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=SOCK_DIAG_BY_FAMILY"
+              ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
index 0a3963e002b558b9cac7a25140b675fed920042f..c7a34e591fb9885cecf77ef8bf10bda34ad6428d 100644 (file)
@@ -45,8 +45,8 @@ test_nlmsg_type(const int fd)
        };
 
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=XFRM_MSG_NEWSA"
-              ", flags=NLM_F_REQUEST, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=XFRM_MSG_NEWSA"
+              ", flags=NLM_F_REQUEST, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 }
@@ -62,24 +62,24 @@ test_nlmsg_flags(const int fd)
        nlh.nlmsg_type = XFRM_MSG_GETSA;
        nlh.nlmsg_flags = NLM_F_DUMP;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=XFRM_MSG_GETSA"
-              ", flags=NLM_F_DUMP, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=XFRM_MSG_GETSA"
+              ", flags=NLM_F_DUMP, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = XFRM_MSG_NEWSA;
        nlh.nlmsg_flags = NLM_F_REPLACE;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=XFRM_MSG_NEWSA"
-              ", flags=NLM_F_REPLACE, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=XFRM_MSG_NEWSA"
+              ", flags=NLM_F_REPLACE, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
 
        nlh.nlmsg_type = XFRM_MSG_DELSA;
        nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
        rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
-       printf("sendto(%d, {{len=%u, type=XFRM_MSG_DELSA"
-              ", flags=NLM_F_ECHO|%#x, seq=0, pid=0}}"
+       printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA"
+              ", flags=NLM_F_ECHO|%#x, seq=0, pid=0}"
               ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
               fd, nlh.nlmsg_len, NLM_F_REPLACE,
               (unsigned) sizeof(nlh), sprintrc(rc));