23 #include <sys/resource.h>
24 #include <sys/syscall.h>
26 #include <sys/types.h>
32 static void AlarmHandler(
int, siginfo_t *,
void *) {
40 static void InterruptHandler(
int, siginfo_t *,
void *) {
44 static void FileSizeExceedHandler(
int, siginfo_t *,
void *) {
49 void (*callback)(
int, siginfo_t *,
void *)) {
50 struct sigaction sigact;
51 memset(&sigact, 0,
sizeof(sigact));
52 sigact.sa_sigaction = callback;
53 if (sigaction(signum, &sigact, 0)) {
54 Printf(
"libFuzzer: sigaction failed with %d\n", errno);
59 void SetTimer(
int Seconds) {
61 {Seconds, 0}, { Seconds, 0 }
63 if (setitimer(ITIMER_REAL, &
T,
nullptr)) {
64 Printf(
"libFuzzer: setitimer failed with %d\n", errno);
71 if (Options.UnitTimeoutSec > 0)
72 SetTimer(Options.UnitTimeoutSec / 2 + 1);
73 if (Options.HandleInt)
75 if (Options.HandleTerm)
77 if (Options.HandleSegv)
79 if (Options.HandleBus)
81 if (Options.HandleAbrt)
83 if (Options.HandleIll)
85 if (Options.HandleFpe)
87 if (Options.HandleXfsz)
95 unsigned long GetPid() {
return (
unsigned long)getpid(); }
99 if (getrusage(RUSAGE_SELF, &usage))
101 if (LIBFUZZER_LINUX) {
103 return usage.ru_maxrss >> 10;
104 }
else if (LIBFUZZER_APPLE) {
106 return usage.ru_maxrss >> 20;
108 assert(0 &&
"GetPeakRSSMb() is not implemented for your platform");
113 return popen(Command, Mode);
116 const void *
SearchMemory(
const void *Data,
size_t DataLen,
const void *Patt,
118 return memmem(Data, DataLen, Patt, PattLen);
123 #endif // LIBFUZZER_POSIX
static void SetSigaction(int signum, void(*callback)(int, siginfo_t *, void *))
void SleepSeconds(int Seconds)
static void StaticFileSizeExceedCallback()
void Printf(const char *Fmt,...)
FILE * OpenProcessPipe(const char *Command, const char *Mode)
void SetSignalHandler(const FuzzingOptions &Options)
const void * SearchMemory(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen)
static void CrashHandler(void *)
CrashHandler - This callback is run if a fatal signal is delivered to the process, it prints the pretty stack trace.
static void StaticAlarmCallback()
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static void StaticInterruptCallback()
static void StaticCrashSignalCallback()