aboutsummaryrefslogtreecommitdiff
path: root/custom_mutators/libprotobuf-mutator-example
diff options
context:
space:
mode:
authorKiprey <Kiprey@qq.com>2021-12-04 23:49:35 +0800
committerKiprey <Kiprey@qq.com>2021-12-04 23:49:35 +0800
commited808fe92fde997bcf00390ba53d3236e9f2733d (patch)
tree2221acf2ec0818022fd93dc4f6a51f6d0bddeb05 /custom_mutators/libprotobuf-mutator-example
parent773baf9391ff5f1793deb7968366819e7fa07adc (diff)
downloadafl++-ed808fe92fde997bcf00390ba53d3236e9f2733d.tar.gz
Fix memory leak in libprotobuf-mutator-example
Diffstat (limited to 'custom_mutators/libprotobuf-mutator-example')
-rw-r--r--custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.cc8
-rw-r--r--custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.h2
2 files changed, 7 insertions, 3 deletions
diff --git a/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.cc b/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.cc
index e0273849..ecbfdd1c 100644
--- a/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.cc
+++ b/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.cc
@@ -99,10 +99,12 @@ extern "C" size_t afl_custom_fuzz(MyMutator *mutator, // return value from afl_c
std::string s = ProtoToData(*p);
// Copy to a new buffer ( mutated_out )
size_t mutated_size = s.size() <= max_size ? s.size() : max_size; // check if raw data's size is larger than max_size
- uint8_t *mutated_out = new uint8_t[mutated_size+1];
- memcpy(mutated_out, s.c_str(), mutated_size); // copy the mutated data
+
+ delete mutator->mutated_out;
+ mutator->mutated_out = new uint8_t[mutated_size+1];
+ memcpy(mutator->mutated_out, s.c_str(), mutated_size); // copy the mutated data
// Assign the mutated data and return mutated_size
- *out_buf = mutated_out;
+ *out_buf = mutator->mutated_out;
return mutated_size;
}
diff --git a/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.h b/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.h
index ebd3ca65..0f5484ca 100644
--- a/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.h
+++ b/custom_mutators/libprotobuf-mutator-example/lpm_aflpp_custom_mutator_input.h
@@ -2,4 +2,6 @@
#include "test.pb.h"
class MyMutator : public protobuf_mutator::Mutator {
+public:
+ uint8_t *mutated_out = nullptr;
};