diff options
| author | matthew <> | 2014-07-09 23:54:00 +0000 |
|---|---|---|
| committer | matthew <> | 2014-07-09 23:54:00 +0000 |
| commit | cff606a33656a8e3011d25140ec13caa6318498a (patch) | |
| tree | 85579bbae92d59d78c5b5aac14593d58956970fe | |
| parent | 7d5786d710e7dae80c5edd8896e3b4b10b7a8fd4 (diff) | |
| download | openbsd-cff606a33656a8e3011d25140ec13caa6318498a.tar.gz openbsd-cff606a33656a8e3011d25140ec13caa6318498a.tar.bz2 openbsd-cff606a33656a8e3011d25140ec13caa6318498a.zip | |
Add some extra sanity checks to make sure the test functions actually
run on altstack.
Diffstat (limited to '')
| -rw-r--r-- | src/regress/lib/libc/explicit_bzero/explicit_bzero.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/regress/lib/libc/explicit_bzero/explicit_bzero.c b/src/regress/lib/libc/explicit_bzero/explicit_bzero.c index 658d2f1e51..d1e4d1494e 100644 --- a/src/regress/lib/libc/explicit_bzero/explicit_bzero.c +++ b/src/regress/lib/libc/explicit_bzero/explicit_bzero.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: explicit_bzero.c,v 1.3 2014/07/09 18:02:24 matthew Exp $ */ | 1 | /* $OpenBSD: explicit_bzero.c,v 1.4 2014/07/09 23:54:00 matthew Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Google Inc. | 3 | * Copyright (c) 2014 Google Inc. |
| 4 | * | 4 | * |
| @@ -39,6 +39,14 @@ setup_stack(void) | |||
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | static void | 41 | static void |
| 42 | assert_on_stack(void) | ||
| 43 | { | ||
| 44 | stack_t cursigstk; | ||
| 45 | ASSERT_EQ(0, sigaltstack(NULL, &cursigstk)); | ||
| 46 | ASSERT_EQ(SS_ONSTACK, cursigstk.ss_flags & (SS_DISABLE|SS_ONSTACK)); | ||
| 47 | } | ||
| 48 | |||
| 49 | static void | ||
| 42 | call_on_stack(void (*fn)(int)) | 50 | call_on_stack(void (*fn)(int)) |
| 43 | { | 51 | { |
| 44 | /* | 52 | /* |
| @@ -106,14 +114,18 @@ static void | |||
| 106 | test_without_bzero(int signo) | 114 | test_without_bzero(int signo) |
| 107 | { | 115 | { |
| 108 | char buf[SECRETBYTES]; | 116 | char buf[SECRETBYTES]; |
| 117 | assert_on_stack(); | ||
| 109 | populate_secret(buf, sizeof(buf)); | 118 | populate_secret(buf, sizeof(buf)); |
| 119 | ASSERT_NE(NULL, memmem(altstack, sizeof(altstack), buf, sizeof(buf))); | ||
| 110 | } | 120 | } |
| 111 | 121 | ||
| 112 | static void | 122 | static void |
| 113 | test_with_bzero(int signo) | 123 | test_with_bzero(int signo) |
| 114 | { | 124 | { |
| 115 | char buf[SECRETBYTES]; | 125 | char buf[SECRETBYTES]; |
| 126 | assert_on_stack(); | ||
| 116 | populate_secret(buf, sizeof(buf)); | 127 | populate_secret(buf, sizeof(buf)); |
| 128 | ASSERT_NE(NULL, memmem(altstack, sizeof(altstack), buf, sizeof(buf))); | ||
| 117 | explicit_bzero(buf, sizeof(buf)); | 129 | explicit_bzero(buf, sizeof(buf)); |
| 118 | } | 130 | } |
| 119 | 131 | ||
