|
Message-Id: <1458788042-26173-6-git-send-email-mic@digikod.net> Date: Thu, 24 Mar 2016 03:53:59 +0100 From: Mickaël Salaün <mic@...ikod.net> To: linux-security-module@...r.kernel.org Cc: Mickaël Salaün <mic@...ikod.net>, Andreas Gruenbacher <agruenba@...hat.com>, Andy Lutomirski <luto@...capital.net>, Andy Lutomirski <luto@...nel.org>, Arnd Bergmann <arnd@...db.de>, Casey Schaufler <casey@...aufler-ca.com>, Daniel Borkmann <daniel@...earbox.net>, David Drysdale <drysdale@...gle.com>, Eric Paris <eparis@...hat.com>, James Morris <james.l.morris@...cle.com>, Jeff Dike <jdike@...toit.com>, Julien Tinnes <jln@...gle.com>, Kees Cook <keescook@...omium.org>, Michael Kerrisk <mtk@...7.org>, Paul Moore <pmoore@...hat.com>, Richard Weinberger <richard@....at>, "Serge E . Hallyn" <serge@...lyn.com>, Stephen Smalley <sds@...ho.nsa.gov>, Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>, Will Drewry <wad@...omium.org>, linux-api@...r.kernel.org, kernel-hardening@...ts.openwall.com Subject: [RFC v1 14/17] selftest/seccomp: Make tracer_poke() more generic Use a different flag test (0x2001) than the RET_TRACE value (0x1001) to not be ambiguous. Signed-off-by: Mickaël Salaün <mic@...ikod.net> Cc: Andy Lutomirski <luto@...nel.org> Cc: Kees Cook <keescook@...omium.org> Cc: Paul Moore <pmoore@...hat.com> Cc: Will Drewry <wad@...omium.org> --- tools/testing/selftests/seccomp/seccomp_bpf.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 7c48d4cf476a..f3a6ef4fce62 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -1113,14 +1113,16 @@ void teardown_trace_fixture(struct __test_metadata *_metadata, /* "poke" tracer arguments and function. */ struct tracer_args_poke_t { - unsigned long poke_addr; + unsigned long *poke_addr; + unsigned long *poke_data; + unsigned long poke_len; }; void tracer_poke(struct __test_metadata *_metadata, pid_t tracee, int status, void *args) { int ret; - unsigned long msg; + unsigned long msg, i; struct tracer_args_poke_t *info = (struct tracer_args_poke_t *)args; ret = ptrace(PTRACE_GETEVENTMSG, tracee, NULL, &msg); @@ -1134,8 +1136,14 @@ void tracer_poke(struct __test_metadata *_metadata, pid_t tracee, int status, * Registers are not touched to try to keep this relatively arch * agnostic. */ - ret = ptrace(PTRACE_POKEDATA, tracee, info->poke_addr, 0x1001); - EXPECT_EQ(0, ret); + for (i = 0; i < info->poke_len; i++) { + unsigned long addr = (unsigned long)info->poke_addr + + i * sizeof(long); + + ret = ptrace(PTRACE_POKEDATA, tracee, + addr, *(info->poke_data + i)); + EXPECT_EQ(0, ret); + } } FIXTURE_DATA(TRACE_poke_sys_read) { @@ -1143,6 +1151,7 @@ FIXTURE_DATA(TRACE_poke_sys_read) { pid_t tracer; long poked; struct tracer_args_poke_t tracer_args; + unsigned long flag; }; FIXTURE_SETUP(TRACE_poke_sys_read) @@ -1163,7 +1172,10 @@ FIXTURE_SETUP(TRACE_poke_sys_read) self->prog.len = (unsigned short)ARRAY_SIZE(filter); /* Set up tracer args. */ - self->tracer_args.poke_addr = (unsigned long)&self->poked; + self->tracer_args.poke_addr = &self->poked; + self->flag = 0x2001; + self->tracer_args.poke_data = &self->flag; + self->tracer_args.poke_len = 1; /* Launch tracer. */ self->tracer = setup_trace_fixture(_metadata, tracer_poke, @@ -1190,7 +1202,7 @@ TEST_F(TRACE_poke_sys_read, read_has_side_effects) EXPECT_EQ(0, self->poked); ret = read(-1, NULL, 0); EXPECT_EQ(-1, ret); - EXPECT_EQ(0x1001, self->poked); + EXPECT_EQ(0x2001, self->poked); } TEST_F(TRACE_poke_sys_read, getpid_runs_normally) -- 2.8.0.rc3
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.