diff options
author | Chen Jingpiao <chenjingpiao@gmail.com> | 2018-03-11 20:14:56 +0800 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2018-03-11 15:35:19 +0000 |
commit | 073d93827f77e8787cdb7ec1ae28b60866334482 (patch) | |
tree | b4a005253dfc785a4fb7aaaebd2ff23d9873382c | |
parent | 547b90e239fd85338fe70f690d52bbc1f47b90bf (diff) | |
download | strace-073d93827f77e8787cdb7ec1ae28b60866334482.tar.gz |
nfnetlink: introduce generic netfilter subsystem decoder
* netlink_netfilter.c: Include "nlattr.h".
(decode_netlink_netfilter): Call decode_nlattr.
-rw-r--r-- | netlink_netfilter.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/netlink_netfilter.c b/netlink_netfilter.c index eb361ed77..1d59ae33a 100644 --- a/netlink_netfilter.c +++ b/netlink_netfilter.c @@ -31,6 +31,7 @@ #ifdef HAVE_LINUX_NETFILTER_NFNETLINK_H # include "print_fields.h" +# include "nlattr.h" # include <netinet/in.h> # include <arpa/inet.h> @@ -80,8 +81,14 @@ decode_netlink_netfilter(struct tcb *const tcp, const size_t offset = NLMSG_ALIGN(sizeof(nfmsg)); if (len > offset) { tprints(", "); - printstr_ex(tcp, addr + offset, - len - offset, QUOTE_FORCE_HEX); + if ((nlmsghdr->nlmsg_type >= NFNL_MSG_BATCH_BEGIN + && nlmsghdr->nlmsg_type <= NFNL_MSG_BATCH_END) + || nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE) + printstr_ex(tcp, addr + offset, + len - offset, QUOTE_FORCE_HEX); + else + decode_nlattr(tcp, addr + offset, len - offset, + NULL, NULL, NULL, 0, NULL); } } |