diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2018-05-08 07:10:16 +0200 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2018-05-09 22:01:45 +0000 |
commit | 346e8002b00d6af4b53c2fd341d79906b3f8f235 (patch) | |
tree | 39fe826774bcd4db09173483dda3d6b8744dcaf2 /tests/nlattr_ndmsg.c | |
parent | afc49df0b09e46eb0bb25c657b5471f50e90815a (diff) | |
download | strace-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.c | 3 |
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); |