blob: 60190702d381a2c204b0eeabd5a1100dd1276f0b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
https://github.com/seccomp/libseccomp/commit/2847f10dddca72167309c04cd09f326fd3b78e2f
From 2847f10dddca72167309c04cd09f326fd3b78e2f Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Sun, 24 Dec 2023 20:38:06 +0100
Subject: [PATCH] scmp_bpf_sim: fix aliasing UB
See https://github.com/seccomp/libseccomp/pull/425.
Punning sys_data_b between uint32_t* and struct* seccomp_data isn't legal,
use memcpy to fix the testsuite with Clang 17.
Modern compilers recognise this idiom and optimise it out anyway.
Signed-off-by: Sam James <sam@gentoo.org>
Acked-by: Tom Hromatka <tom.hromatka@oracle.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
--- a/tools/scmp_bpf_sim.c
+++ b/tools/scmp_bpf_sim.c
@@ -182,7 +182,8 @@ static void bpf_execute(const struct bpf_program *prg,
switch (code) {
case BPF_LD+BPF_W+BPF_ABS:
if (k < BPF_SYSCALL_MAX) {
- uint32_t val = *((uint32_t *)&sys_data_b[k]);
+ uint32_t val;
+ memcpy(&val, &sys_data_b[k], sizeof(val));
state.acc = ttoh32(arch, val);
} else
exit_error(ERANGE, ip_c);
|