diff options
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerUtil.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/FuzzerUtil.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerUtil.cpp b/llvm/lib/Fuzzer/FuzzerUtil.cpp index 9364955b305..84c4983f991 100644 --- a/llvm/lib/Fuzzer/FuzzerUtil.cpp +++ b/llvm/lib/Fuzzer/FuzzerUtil.cpp @@ -19,6 +19,7 @@ #include <signal.h> #include <sstream> #include <unistd.h> +#include <errno.h> namespace fuzzer { @@ -84,14 +85,18 @@ static void SetSigaction(int signum, struct sigaction sigact; memset(&sigact, 0, sizeof(sigact)); sigact.sa_sigaction = callback; - int Res = sigaction(signum, &sigact, 0); - assert(Res == 0); + if (sigaction(signum, &sigact, 0)) { + Printf("libFuzzer: sigaction failed with %d\n", errno); + exit(1); + } } void SetTimer(int Seconds) { struct itimerval T {{Seconds, 0}, {Seconds, 0}}; - int Res = setitimer(ITIMER_REAL, &T, nullptr); - assert(Res == 0); + if (setitimer(ITIMER_REAL, &T, nullptr)) { + Printf("libFuzzer: setitimer failed with %d\n", errno); + exit(1); + } SetSigaction(SIGALRM, AlarmHandler); } @@ -105,7 +110,8 @@ void SetSigIntHandler() { SetSigaction(SIGINT, InterruptHandler); } int NumberOfCpuCores() { FILE *F = popen("nproc", "r"); int N = 0; - fscanf(F, "%d", &N); + if (fscanf(F, "%d", &N) != 1) + N = 1; fclose(F); return N; } |