aboutsummaryrefslogtreecommitdiff
path: root/tests/sys/netinet/libalias
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2022-02-12 00:04:52 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2022-02-12 00:04:52 +0000
commitdba02df30d536922727a7ea509514462452a247a (patch)
tree4763583583e7931ce770c0194596647232876dfc /tests/sys/netinet/libalias
parentcd0525f615fe8fea750d2078b61026aabe0d0471 (diff)
downloadsrc-dba02df30d536922727a7ea509514462452a247a.tar.gz
src-dba02df30d536922727a7ea509514462452a247a.zip
Cast pointer to uintptr_t to avoid alignment warnings.
Both struct ip and struct udphdr both have an aligment of 2, but the cast from struct ip to a uint32_t pointer confused GCC 9 into raising the required alignment to 4 and then raising a -Waddress-of-packed-member error when casting to struct udphdr. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D31941
Diffstat (limited to 'tests/sys/netinet/libalias')
-rw-r--r--tests/sys/netinet/libalias/util.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tests/sys/netinet/libalias/util.c b/tests/sys/netinet/libalias/util.c
index 681c3b20ee41..14ba196a59a5 100644
--- a/tests/sys/netinet/libalias/util.c
+++ b/tests/sys/netinet/libalias/util.c
@@ -109,9 +109,9 @@ ip_packet(u_char protocol, size_t len)
struct udphdr *
set_udp(struct ip *p, u_short sport, u_short dport) {
- uint32_t *up = (void *)p;
- struct udphdr *u = (void *)&(up[p->ip_hl]);
- int payload = ntohs(p->ip_len) - 4*p->ip_hl;
+ int hlen = p->ip_hl << 2;
+ struct udphdr *u = (struct udphdr *)((uintptr_t)p + hlen);
+ int payload = ntohs(p->ip_len) - hlen;
REQUIRE(payload >= (int)sizeof(*u));
p->ip_p = IPPROTO_UDP;