mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-15 11:28:08 +00:00
autotoken: splicing; splice_optout
This commit is contained in:
@ -358,6 +358,19 @@ struct custom_mutator *load_custom_mutator(afl_state_t *afl, const char *fn) {
|
||||
|
||||
}
|
||||
|
||||
/* "afl_custom_splice_optout", optional, never called */
|
||||
mutator->afl_custom_splice_optout = dlsym(dh, "afl_custom_splice_optout");
|
||||
if (!mutator->afl_custom_splice_optout) {
|
||||
|
||||
ACTF("optional symbol 'afl_custom_splice_optout' not found.");
|
||||
|
||||
} else {
|
||||
|
||||
OKF("Found 'afl_custom_splice_optout'.");
|
||||
afl->custom_splice_optout = 1;
|
||||
|
||||
}
|
||||
|
||||
/* "afl_custom_fuzz_send", optional */
|
||||
mutator->afl_custom_fuzz_send = dlsym(dh, "afl_custom_fuzz_send");
|
||||
if (!mutator->afl_custom_fuzz_send) {
|
||||
|
@ -1954,7 +1954,8 @@ custom_mutator_stage:
|
||||
u32 target_len = 0;
|
||||
|
||||
/* check if splicing makes sense yet (enough entries) */
|
||||
if (likely(afl->ready_for_splicing_count > 1)) {
|
||||
if (likely(!afl->custom_splice_optout &&
|
||||
afl->ready_for_splicing_count > 1)) {
|
||||
|
||||
/* Pick a random other queue entry for passing to external API
|
||||
that has the necessary length */
|
||||
|
@ -248,6 +248,8 @@ static py_mutator_t *init_py_module(afl_state_t *afl, u8 *module_name) {
|
||||
PyObject_GetAttrString(py_module, "queue_get");
|
||||
py_functions[PY_FUNC_FUZZ_SEND] =
|
||||
PyObject_GetAttrString(py_module, "fuzz_send");
|
||||
py_functions[PY_FUNC_SPLICE_OPTOUT] =
|
||||
PyObject_GetAttrString(py_module, "splice_optout");
|
||||
py_functions[PY_FUNC_QUEUE_NEW_ENTRY] =
|
||||
PyObject_GetAttrString(py_module, "queue_new_entry");
|
||||
py_functions[PY_FUNC_INTROSPECTION] =
|
||||
@ -394,6 +396,13 @@ void deinit_py(void *py_mutator) {
|
||||
|
||||
}
|
||||
|
||||
void splice_optout_py(void *py_mutator) {
|
||||
|
||||
// this is never called
|
||||
(void)(py_mutator);
|
||||
|
||||
}
|
||||
|
||||
struct custom_mutator *load_custom_mutator_py(afl_state_t *afl,
|
||||
char *module_name) {
|
||||
|
||||
@ -474,6 +483,13 @@ struct custom_mutator *load_custom_mutator_py(afl_state_t *afl,
|
||||
|
||||
}
|
||||
|
||||
if (py_functions[PY_FUNC_SPLICE_OPTOUT]) {
|
||||
|
||||
mutator->afl_custom_splice_optout = splice_optout_py;
|
||||
afl->custom_splice_optout = 1;
|
||||
|
||||
}
|
||||
|
||||
if (py_functions[PY_FUNC_QUEUE_NEW_ENTRY]) {
|
||||
|
||||
mutator->afl_custom_queue_new_entry = queue_new_entry_py;
|
||||
|
Reference in New Issue
Block a user