Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / tools / fuzzing / libfuzzer / patches / 10-ef-runtime.patch
bloba544f42bd75d24050da9fd178840641c166b0526
1 # HG changeset patch
2 # User Christian Holler <choller@mozilla.com>
3 # Date 1596126054 -7200
4 # Thu Jul 30 18:20:54 2020 +0200
5 # Node ID 8a2a26b33d516c43c366b2f24d731d27d9843349
6 # Parent 997c4109edd112695097fd8c55cbacd976cab24a
7 [libFuzzer] Allow external functions to be defined at runtime
9 diff --git a/FuzzerDriver.cpp b/FuzzerDriver.cpp
10 --- a/FuzzerDriver.cpp
11 +++ b/FuzzerDriver.cpp
12 @@ -608,17 +608,18 @@ static Vector<SizedFile> ReadCorpora(con
13 SizedFiles.push_back({File, Size});
14 return SizedFiles;
17 int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
18 using namespace fuzzer;
19 assert(argc && argv && "Argument pointers cannot be nullptr");
20 std::string Argv0((*argv)[0]);
21 - EF = new ExternalFunctions();
22 + if (!EF)
23 + EF = new ExternalFunctions();
24 if (EF->LLVMFuzzerInitialize)
25 EF->LLVMFuzzerInitialize(argc, argv);
26 if (EF->__msan_scoped_disable_interceptor_checks)
27 EF->__msan_scoped_disable_interceptor_checks();
28 const Vector<std::string> Args(*argv, *argv + *argc);
29 assert(!Args.empty());
30 ProgName = new std::string(Args[0]);
31 if (Argv0 != *ProgName) {