summaryrefslogtreecommitdiff
path: root/tests/nlattr_ndmsg.c
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2018-05-08 07:10:16 +0200
committerDmitry V. Levin <ldv@altlinux.org>2018-05-09 22:01:45 +0000
commit346e8002b00d6af4b53c2fd341d79906b3f8f235 (patch)
tree39fe826774bcd4db09173483dda3d6b8744dcaf2 /tests/nlattr_ndmsg.c
parentafc49df0b09e46eb0bb25c657b5471f50e90815a (diff)
downloadstrace-346e8002b00d6af4b53c2fd341d79906b3f8f235.tar.gz
tests: introduce midtail_alloc and use it in netlink tests
netlink tests happen to access memory located before the tail_malloc'ed pointers, a practice that doesn't go well with the latest compilers because tail_malloc is marked with ATTRIBUTE_MALLOC. For example, glibc in -D_FORTIFY_SOURCE=2 mode and gcc 8 with -Warray-bounds enabled complain about negative offsets out of bounds. Fix this issue by introducing midtail_alloc. * tests/tests.h (midtail_alloc): New macro. * tests/netlink_crypto.c: Use it instead of tail_malloc for nlh0 allocation. * tests/netlink_netfilter.c: Likewise. * tests/netlink_protocol.c: Likewise. * tests/netlink_route.c: Likewise. * tests/netlink_selinux.c: Likewise. * tests/netlink_sock_diag.c: Likewise. * tests/nlattr_br_port_msg.c: Likewise. * tests/nlattr_crypto_user_alg.c: Likewise. * tests/nlattr_dcbmsg.c: Likewise. * tests/nlattr_fib_rule_hdr.c: Likewise. * tests/nlattr_ifaddrlblmsg.c: Likewise. * tests/nlattr_ifaddrmsg.c: Likewise. * tests/nlattr_ifinfomsg.c: Likewise. * tests/nlattr_ifla_brport.c: Likewise. * tests/nlattr_ifla_port.c: Likewise. * tests/nlattr_ifla_xdp.c: Likewise. * tests/nlattr_inet_diag_msg.c: Likewise. * tests/nlattr_inet_diag_req_compat.c: Likewise. * tests/nlattr_inet_diag_req_v2.c: Likewise. * tests/nlattr_mdba_mdb_entry.c: Likewise. * tests/nlattr_mdba_router_port.c: Likewise. * tests/nlattr_ndmsg.c: Likewise. * tests/nlattr_ndtmsg.c: Likewise. * tests/nlattr_netconfmsg.c: Likewise. * tests/nlattr_netlink_diag_msg.c: Likewise. * tests/nlattr_nlmsgerr.c: Likewise. * tests/nlattr_packet_diag_msg.c: Likewise. * tests/nlattr_rtgenmsg.c: Likewise. * tests/nlattr_rtmsg.c: Likewise. * tests/nlattr_smc_diag_msg.c: Likewise. * tests/nlattr_tc_stats.c: Likewise. * tests/nlattr_tca_stab.c: Likewise. * tests/nlattr_tcamsg.c: Likewise. * tests/nlattr_tcmsg.c: Likewise. * tests/nlattr_unix_diag_msg.c: Likewise. Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Diffstat (limited to 'tests/nlattr_ndmsg.c')
-rw-r--r--tests/nlattr_ndmsg.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/nlattr_ndmsg.c b/tests/nlattr_ndmsg.c
index 8538a8275..abb7c39d0 100644
--- a/tests/nlattr_ndmsg.c
+++ b/tests/nlattr_ndmsg.c
@@ -77,7 +77,8 @@ main(void)
const int fd = create_nl_socket(NETLINK_ROUTE);
const unsigned int hdrlen = sizeof(struct ndmsg);
- void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+ void *nlh0 = midtail_alloc(NLMSG_SPACE(hdrlen),
+ NLA_HDRLEN + sizeof(struct nda_cacheinfo));
static char pattern[4096];
fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);