diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2015-06-29 16:31:10 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2015-06-29 16:31:10 +0000 |
commit | 6adc5c727f655efcad245f35cc6b7ea536ba1ff2 (patch) | |
tree | 0aef9837fa59d505554d6510a5657dabd45a489f | |
parent | 93a62971a99778578dd0470f101d6413641fc4b5 (diff) | |
download | compiler-rt-6adc5c727f655efcad245f35cc6b7ea536ba1ff2.tar.gz |
sanitizer_common: fix and re-enable signal_segv_handler test
struct sigaction was not initialized. As the result if SA_RESETHAND is set in sa_flags, then the handler is reset after first invocation leading to crash.
Initialize struct sigaction to zero.
Reviewed in http://reviews.llvm.org/D10803
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@240965 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc b/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc index dd18213d6..23e32a884 100644 --- a/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc +++ b/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc @@ -13,12 +13,11 @@ // "benign" SEGVs that are handled by signal handler, and ensures that // the process survive. -// REQUIRES: disabled - #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <sys/mman.h> +#include <string.h> void *guard; @@ -28,6 +27,8 @@ void handler(int signo, siginfo_t *info, void *uctx) { int main() { struct sigaction a, old; + memset(&a, 0, sizeof(a)); + memset(&old, 0, sizeof(old)); a.sa_sigaction = handler; a.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &a, &old); |