aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-07-09 12:31:29 +0200
committervanhauser-thc <vh@thc.org>2021-07-09 12:31:29 +0200
commit1b2637545b6b9f171ea46ed6cf5164e8d05d1776 (patch)
treea5b86e84fb17d7330391c6b831c0184f26d00030
parentd354ec2586a3a31c87a8b95433c2886f04c44a03 (diff)
downloadafl++-1b2637545b6b9f171ea46ed6cf5164e8d05d1776.tar.gz
reenable splicing
-rw-r--r--custom_mutators/gramatron/gramfuzz-util.c26
-rw-r--r--custom_mutators/gramatron/gramfuzz.c24
-rw-r--r--custom_mutators/gramatron/gramfuzz.h1
3 files changed, 19 insertions, 32 deletions
diff --git a/custom_mutators/gramatron/gramfuzz-util.c b/custom_mutators/gramatron/gramfuzz-util.c
index 41ffd86d..2e0af936 100644
--- a/custom_mutators/gramatron/gramfuzz-util.c
+++ b/custom_mutators/gramatron/gramfuzz-util.c
@@ -248,32 +248,6 @@ Array *parse_input(state *pda, FILE *fp) {
}
-Array *open_input(state *pda, u8 *data, size_t len) {
-
- int fd = memfd_create("foo", O_RDWR);
- if (fd < 0) {
-
- fprintf(stderr, "Error: memfd_create failed\n");
- return NULL;
-
- }
-
- ck_write(fd, data, len, "memfd_create");
- lseek(fd, 0, SEEK_SET);
- FILE *f = fdopen(fd, "rb");
- if (!f) {
-
- fprintf(stderr, "Error: fdopen failed\n");
- return NULL;
-
- }
-
- Array *res = parse_input(pda, f);
- fclose(f);
- return res;
-
-}
-
// Read the input representation into memory
Array *read_input(state *pda, u8 *fn) {
diff --git a/custom_mutators/gramatron/gramfuzz.c b/custom_mutators/gramatron/gramfuzz.c
index 55b631e6..fd126ec0 100644
--- a/custom_mutators/gramatron/gramfuzz.c
+++ b/custom_mutators/gramatron/gramfuzz.c
@@ -208,18 +208,32 @@ size_t afl_custom_fuzz(my_mutator_t *data, uint8_t *buf, size_t buf_size,
doMult(data->orig_walk, data->recurIdx, data->recurlen);
data->mut_alloced = 1;
- /*} else if (data->mut_idx == 2) { // Perform splice mutation
+ } else if (data->mut_idx == 2) { // Perform splice mutation
- // Read the input representation for the splice candidate
- //u8 * automaton_fn = alloc_printf("%s.aut", add_buf);
- Array *spliceCandidate = open_input(pda, add_buf, add_buf_size);
+ // we cannot use the supplied splice data so choose a new random file
+ u32 tid = rand() % data->afl->queued_paths;
+ struct queue_entry *q = data->afl->queue_buf[tid];
+
+ // Read the input representation for the splice candidate
+ u8 * automaton_fn = alloc_printf("%s.aut", q->fname);
+ Array *spliceCandidate = read_input(pda, automaton_fn);
+
+ if (spliceCandidate) {
data->mutated_walk =
performSpliceOne(data->orig_walk, data->statemap, spliceCandidate);
data->mut_alloced = 1;
free(spliceCandidate->start);
free(spliceCandidate);
- //ck_free(automaton_fn);*/
+
+ } else {
+
+ data->mutated_walk = gen_input(pda, NULL);
+ data->mut_alloced = 1;
+
+ }
+
+ ck_free(automaton_fn);
} else { // Generate an input from scratch
diff --git a/custom_mutators/gramatron/gramfuzz.h b/custom_mutators/gramatron/gramfuzz.h
index 46cde8ec..e6912074 100644
--- a/custom_mutators/gramatron/gramfuzz.h
+++ b/custom_mutators/gramatron/gramfuzz.h
@@ -199,7 +199,6 @@ Array *performSpliceGF(state *, Array *, afl_state_t *);
void dump_input(u8 *, char *, int *);
void write_input(Array *, u8 *);
Array *read_input(state *, u8 *);
-Array *open_input(state *, u8 *, size_t);
state *pda;
// // AFL-specific struct