Don't install SIGILL handler until after sigsetjmp.
Previously, if SIGILL was received between the signal handler being installed and before the sigsetjmp, the process would longjmp to a random location. Change-Id: I9e6143a17ff3db0e1b00ece68fce161801461010 Reviewed-on: https://boringssl-review.googlesource.com/3950 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
parent
8b368412d3
commit
078abceb29
@ -93,10 +93,10 @@ static int probe_for_NEON() {
|
|||||||
|
|
||||||
sigset_t original_sigmask;
|
sigset_t original_sigmask;
|
||||||
sigprocmask(SIG_SETMASK, &sigmask, &original_sigmask);
|
sigprocmask(SIG_SETMASK, &sigmask, &original_sigmask);
|
||||||
sigaction(SIGILL, &sigill_action, &sigill_original_action);
|
|
||||||
|
|
||||||
|
|
||||||
if (sigsetjmp(sigill_jmp, 1 /* save signals */) == 0) {
|
if (sigsetjmp(sigill_jmp, 1 /* save signals */) == 0) {
|
||||||
|
sigaction(SIGILL, &sigill_action, &sigill_original_action);
|
||||||
|
|
||||||
// This function cannot be inline asm because GCC will refuse to compile
|
// This function cannot be inline asm because GCC will refuse to compile
|
||||||
// inline NEON instructions unless building with -mfpu=neon, which would
|
// inline NEON instructions unless building with -mfpu=neon, which would
|
||||||
// defeat the point of probing for support at runtime.
|
// defeat the point of probing for support at runtime.
|
||||||
|
Loading…
Reference in New Issue
Block a user