* netlink.c (print_nlmsghdr): Remove condition nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE. (decode_nlmsg_type): Add condition type >= NLMSG_MIN_TYPE. (decode_nlmsg_flags): Add condition type < NLMSG_MIN_TYPE. (decode_netlink_sock_diag): Add condition nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE. --- netlink.c | 13 ++++++++----- netlink_sock_diag.c | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/netlink.c b/netlink.c index 87b389c..d990fad 100644 --- a/netlink.c +++ b/netlink.c @@ -177,7 +177,7 @@ decode_nlmsg_type(const uint16_t type, const unsigned int family) const struct xlat *xlat = netlink_types; const char *dflt = "NLMSG_???"; - if (family < ARRAY_SIZE(nlmsg_types)) { + if (type >= NLMSG_MIN_TYPE && family < ARRAY_SIZE(nlmsg_types)) { if (nlmsg_types[family].decoder) decoder = nlmsg_types[family].decoder; if (nlmsg_types[family].xlat) @@ -194,6 +194,11 @@ decode_nlmsg_flags(const uint16_t flags, const uint16_t type, const int family) { const struct xlat *table = NULL; + if (type < NLMSG_MIN_TYPE) { + printflags(netlink_flags, flags, "NLM_F_???"); + return; + } + switch (family) { case NETLINK_SOCK_DIAG: table = netlink_get_flags; @@ -246,10 +251,8 @@ print_nlmsghdr(struct tcb *tcp, tprintf("{len=%u, type=", nlmsghdr->nlmsg_len); - const int hdr_family = (nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE) - ? NL_FAMILY_DEFAULT - : (family != NL_FAMILY_DEFAULT - ? family : get_fd_nl_family(tcp, fd)); + const int hdr_family = family != NL_FAMILY_DEFAULT + ? family : get_fd_nl_family(tcp, fd); decode_nlmsg_type(nlmsghdr->nlmsg_type, hdr_family); diff --git a/netlink_sock_diag.c b/netlink_sock_diag.c index d854808..ab09bd1 100644 --- a/netlink_sock_diag.c +++ b/netlink_sock_diag.c @@ -536,6 +536,9 @@ decode_netlink_sock_diag(struct tcb *const tcp, { uint8_t family; + if (nlmsghdr->nlmsg_type < NLMSG_MIN_TYPE) + return false; + if (!umove_or_printaddr(tcp, addr, &family)) { if (family < ARRAY_SIZE(diag_decoders) && len > sizeof(family)) { -- 2.7.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel