From: Dmitry V. Levin Date: Sun, 18 Jun 2017 21:43:39 +0000 (+0000) Subject: netlink: do not print extra braces around payloadless nlmsghdr X-Git-Tag: v4.18~67 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f639f902413934a3ad754ddc71472d9c74f64077;p=strace netlink: do not print extra braces around payloadless nlmsghdr * 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. --- diff --git a/netlink.c b/netlink.c index 4bef9498..dc1a070d 100644 --- 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 diff --git a/tests/netlink_audit.c b/tests/netlink_audit.c index e955c427..c13feeac 100644 --- a/tests/netlink_audit.c +++ b/tests/netlink_audit.c @@ -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)); } diff --git a/tests/netlink_netfilter.c b/tests/netlink_netfilter.c index 103ae95f..0c64b108 100644 --- a/tests/netlink_netfilter.c +++ b/tests/netlink_netfilter.c @@ -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)); } diff --git a/tests/netlink_protocol.c b/tests/netlink_protocol.c index 9f796cf2..c2b40802 100644 --- a/tests/netlink_protocol.c +++ b/tests/netlink_protocol.c @@ -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)); diff --git a/tests/netlink_route.c b/tests/netlink_route.c index 0e5c2109..71458d0f 100644 --- a/tests/netlink_route.c +++ b/tests/netlink_route.c @@ -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)); diff --git a/tests/netlink_selinux.c b/tests/netlink_selinux.c index ef30badc..6a6652f8 100644 --- a/tests/netlink_selinux.c +++ b/tests/netlink_selinux.c @@ -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)); } diff --git a/tests/netlink_sock_diag.c b/tests/netlink_sock_diag.c index e5b774ee..26e43257 100644 --- a/tests/netlink_sock_diag.c +++ b/tests/netlink_sock_diag.c @@ -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)); } diff --git a/tests/netlink_xfrm.c b/tests/netlink_xfrm.c index 0a3963e0..c7a34e59 100644 --- a/tests/netlink_xfrm.c +++ b/tests/netlink_xfrm.c @@ -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));