mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-08 08:11:34 +00:00
72 lines
1.3 KiB
C
72 lines
1.3 KiB
C
// This simple example just creates random buffer <= 100 filled with 'A'
|
|
// needs -I /path/to/AFLplusplus/include
|
|
//#include "custom_mutator_helpers.h"
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
#include "radamsa.h"
|
|
#include "custom_mutator_helpers.h"
|
|
|
|
typedef struct my_mutator {
|
|
|
|
afl_t *afl;
|
|
|
|
u8 *mutator_buf;
|
|
|
|
unsigned int seed;
|
|
|
|
} my_mutator_t;
|
|
|
|
my_mutator_t *afl_custom_init(afl_t *afl, unsigned int seed) {
|
|
|
|
srand(seed);
|
|
my_mutator_t *data = calloc(1, sizeof(my_mutator_t));
|
|
if (!data) {
|
|
|
|
perror("afl_custom_init alloc");
|
|
return NULL;
|
|
|
|
}
|
|
|
|
if ((data->mutator_buf = malloc(MAX_FILE)) == NULL) {
|
|
|
|
free(data);
|
|
perror("mutator_buf alloc");
|
|
return NULL;
|
|
|
|
}
|
|
|
|
data->afl = afl;
|
|
data->seed = seed;
|
|
|
|
radamsa_init();
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
size_t afl_custom_fuzz(my_mutator_t *data, uint8_t *buf, size_t buf_size,
|
|
u8 **out_buf, uint8_t *add_buf, size_t add_buf_size,
|
|
size_t max_size) {
|
|
|
|
*out_buf = data->mutator_buf;
|
|
return radamsa(buf, buf_size, data->mutator_buf, max_size, data->seed++);
|
|
|
|
}
|
|
|
|
/**
|
|
* Deinitialize everything
|
|
*
|
|
* @param data The data ptr from afl_custom_init
|
|
*/
|
|
void afl_custom_deinit(my_mutator_t *data) {
|
|
|
|
free(data->mutator_buf);
|
|
free(data);
|
|
|
|
}
|
|
|