# HG changeset patch # User Christian Holler # Date 1596126054 -7200 # Thu Jul 30 18:20:54 2020 +0200 # Node ID 8a2a26b33d516c43c366b2f24d731d27d9843349 # Parent 997c4109edd112695097fd8c55cbacd976cab24a [libFuzzer] Allow external functions to be defined at runtime diff --git a/FuzzerDriver.cpp b/FuzzerDriver.cpp --- a/FuzzerDriver.cpp +++ b/FuzzerDriver.cpp @@ -608,17 +608,18 @@ static Vector ReadCorpora(con SizedFiles.push_back({File, Size}); return SizedFiles; } int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) { using namespace fuzzer; assert(argc && argv && "Argument pointers cannot be nullptr"); std::string Argv0((*argv)[0]); - EF = new ExternalFunctions(); + if (!EF) + EF = new ExternalFunctions(); if (EF->LLVMFuzzerInitialize) EF->LLVMFuzzerInitialize(argc, argv); if (EF->__msan_scoped_disable_interceptor_checks) EF->__msan_scoped_disable_interceptor_checks(); const Vector Args(*argv, *argv + *argc); assert(!Args.empty()); ProgName = new std::string(Args[0]); if (Argv0 != *ProgName) {