Commit e2e0d90c authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Daniel Borkmann

selftests/bpf: Fix misaligned memory access in queue_stack_map test

Copy over iphdr into a local variable before accessing its fields.
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20211124002325.1737739-11-andrii@kernel.org
parent 6c4dedb7
...@@ -14,7 +14,7 @@ static void test_queue_stack_map_by_type(int type) ...@@ -14,7 +14,7 @@ static void test_queue_stack_map_by_type(int type)
int i, err, prog_fd, map_in_fd, map_out_fd; int i, err, prog_fd, map_in_fd, map_out_fd;
char file[32], buf[128]; char file[32], buf[128];
struct bpf_object *obj; struct bpf_object *obj;
struct iphdr *iph = (void *)buf + sizeof(struct ethhdr); struct iphdr iph;
/* Fill test values to be used */ /* Fill test values to be used */
for (i = 0; i < MAP_SIZE; i++) for (i = 0; i < MAP_SIZE; i++)
...@@ -60,15 +60,17 @@ static void test_queue_stack_map_by_type(int type) ...@@ -60,15 +60,17 @@ static void test_queue_stack_map_by_type(int type)
err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4), err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4),
buf, &size, &retval, &duration); buf, &size, &retval, &duration);
if (err || retval || size != sizeof(pkt_v4) || if (err || retval || size != sizeof(pkt_v4))
iph->daddr != val) break;
memcpy(&iph, buf + sizeof(struct ethhdr), sizeof(iph));
if (iph.daddr != val)
break; break;
} }
CHECK(err || retval || size != sizeof(pkt_v4) || iph->daddr != val, CHECK(err || retval || size != sizeof(pkt_v4) || iph.daddr != val,
"bpf_map_pop_elem", "bpf_map_pop_elem",
"err %d errno %d retval %d size %d iph->daddr %u\n", "err %d errno %d retval %d size %d iph->daddr %u\n",
err, errno, retval, size, iph->daddr); err, errno, retval, size, iph.daddr);
/* Queue is empty, program should return TC_ACT_SHOT */ /* Queue is empty, program should return TC_ACT_SHOT */
err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4), err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment