2424#include < chrono>
2525#include < cstdlib>
2626#include < cstring>
27+ #include < fstream>
28+ #include < functional>
2729#include < mutex>
2830#include < string>
2931#include < thread>
30- #include < fstream>
3132
3233// This function should be present in the libFuzzer so that the client
3334// binary can test for its existence.
@@ -162,13 +163,13 @@ static bool ParseOneFlag(const char *Param) {
162163 auto Val = MyStol (Str);
163164 *FlagDescriptions[F].IntFlag = static_cast <int >(Val);
164165 if (Flags.verbosity >= 2 )
165- Printf (" Flag: %s %d\n " , Name, Val);
166+ Printf (" Flag: %s %d\n " , Name, ( int ) Val);
166167 return true ;
167168 } else if (FlagDescriptions[F].UIntFlag ) {
168169 auto Val = std::stoul (Str);
169170 *FlagDescriptions[F].UIntFlag = static_cast <unsigned int >(Val);
170171 if (Flags.verbosity >= 2 )
171- Printf (" Flag: %s %u\n " , Name, Val);
172+ Printf (" Flag: %s %u\n " , Name, ( uint32_t ) Val);
172173 return true ;
173174 } else if (FlagDescriptions[F].StrFlag ) {
174175 *FlagDescriptions[F].StrFlag = Str;
@@ -305,6 +306,11 @@ static int RunInMultipleProcesses(const std::vector<std::string> &Args,
305306 return HasErrors ? 1 : 0 ;
306307}
307308
309+ void StartRssThread (Fuzzer *F, size_t RssLimitMb);
310+
311+ // Fuchsia needs to do some book checking before starting the RssThread,
312+ // so it has its own implementation.
313+ #if !LIBFUZZER_FUCHSIA
308314static void RssThread (Fuzzer *F, size_t RssLimitMb) {
309315 while (true ) {
310316 SleepSeconds (1 );
@@ -314,12 +320,13 @@ static void RssThread(Fuzzer *F, size_t RssLimitMb) {
314320 }
315321}
316322
317- static void StartRssThread (Fuzzer *F, size_t RssLimitMb) {
323+ void StartRssThread (Fuzzer *F, size_t RssLimitMb) {
318324 if (!RssLimitMb)
319325 return ;
320326 std::thread T (RssThread, F, RssLimitMb);
321327 T.detach ();
322328}
329+ #endif
323330
324331int RunOneTest (Fuzzer *F, const char *InputFilePath, size_t MaxLen) {
325332 Unit U = FileToVector (InputFilePath);
@@ -602,7 +609,7 @@ int AnalyzeDictionary(Fuzzer *F, const std::vector<Unit> &Dict,
602609 return 0 ;
603610}
604611
605- std::vector<std::string> ParseSeedInuts (const char *seed_inputs) {
612+ std::vector<std::string> ParseSeedInputs (const char *seed_inputs) {
606613 // Parse -seed_inputs=file1,file2,... or -seed_inputs=@seed_inputs_file
607614 std::vector<std::string> Files;
608615 if (!seed_inputs) return Files;
@@ -833,6 +840,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
833840 Options.HandleInt = Flags.handle_int ;
834841 Options.HandleSegv = Flags.handle_segv ;
835842 Options.HandleTerm = Flags.handle_term ;
843+ Options.HandleTrap = Flags.handle_trap ;
836844 Options.HandleXfsz = Flags.handle_xfsz ;
837845 Options.HandleUsr1 = Flags.handle_usr1 ;
838846 Options.HandleUsr2 = Flags.handle_usr2 ;
@@ -911,7 +919,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
911919 exit (0 );
912920 }
913921
914- auto CorporaFiles = ReadCorpora (*Inputs, ParseSeedInuts (Flags.seed_inputs ));
922+ auto CorporaFiles = ReadCorpora (*Inputs, ParseSeedInputs (Flags.seed_inputs ));
915923 F->Loop (CorporaFiles);
916924
917925 if (Flags.verbosity )
0 commit comments