aboutsummaryrefslogtreecommitdiff
path: root/custom_mutators/libfuzzer/FuzzerLoop.cpp
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-11-10 13:43:48 +0100
committervan Hauser <vh@thc.org>2020-11-10 13:43:48 +0100
commit166130324898071a08e178dfeb901af44168236e (patch)
tree7946c72db3144e849729fe9627e9b395bf0a5f3f /custom_mutators/libfuzzer/FuzzerLoop.cpp
parent82d1c3e18dd1b90fa15f7c056f94dc1a06ee345d (diff)
downloadafl++-166130324898071a08e178dfeb901af44168236e.tar.gz
fix libfuzzer custom mutator and add introspection function
Diffstat (limited to 'custom_mutators/libfuzzer/FuzzerLoop.cpp')
-rw-r--r--custom_mutators/libfuzzer/FuzzerLoop.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/custom_mutators/libfuzzer/FuzzerLoop.cpp b/custom_mutators/libfuzzer/FuzzerLoop.cpp
index 201883f0..08fda520 100644
--- a/custom_mutators/libfuzzer/FuzzerLoop.cpp
+++ b/custom_mutators/libfuzzer/FuzzerLoop.cpp
@@ -206,6 +206,8 @@ void Fuzzer::StaticDeathCallback() {
void Fuzzer::DumpCurrentUnit(const char *Prefix) {
+ return;
+
if (!CurrentUnitData) return; // Happens when running individual inputs.
ScopedDisableMsanInterceptorChecks S;
MD.PrintMutationSequence();
@@ -733,6 +735,7 @@ std::string Fuzzer::WriteToOutputCorpus(const Unit &U) {
void Fuzzer::WriteUnitToFileWithPrefix(const Unit &U, const char *Prefix) {
+ return;
if (!Options.SaveArtifacts) return;
std::string Path = Options.ArtifactPrefix + Prefix + Hash(U);
if (!Options.ExactArtifactPath.empty())
@@ -1073,13 +1076,21 @@ void Fuzzer::MinimizeCrashLoop(const Unit &U) {
} // namespace fuzzer
+#ifdef INTROSPECTION
+ extern const char *introspection_ptr;
+#endif
+
extern "C" {
ATTRIBUTE_INTERFACE size_t LLVMFuzzerMutate(uint8_t *Data, size_t Size,
size_t MaxSize) {
assert(fuzzer::F);
- return fuzzer::F->GetMD().DefaultMutate(Data, Size, MaxSize);
+ size_t r = fuzzer::F->GetMD().DefaultMutate(Data, Size, MaxSize);
+#ifdef INTROSPECTION
+ introspection_ptr = fuzzer::F->GetMD().WriteMutationSequence();
+#endif
+ return r;
}