mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-15 19:38:09 +00:00
@ -1370,7 +1370,7 @@ afl_fsrv_run_target(afl_forkserver_t *fsrv, u32 timeout,
|
||||
case Crash:
|
||||
case Asan:
|
||||
return FSRV_RUN_CRASH;
|
||||
case Timout:
|
||||
case Timeout:
|
||||
return FSRV_RUN_TMOUT;
|
||||
case InvalidWriteToPayload:
|
||||
/* ??? */
|
||||
|
@ -41,7 +41,7 @@ void cmplog_exec_child(afl_forkserver_t *fsrv, char **argv) {
|
||||
|
||||
}
|
||||
|
||||
execv(argv[0], argv);
|
||||
execv(fsrv->target_path, argv);
|
||||
|
||||
}
|
||||
|
||||
|
@ -312,12 +312,18 @@ struct custom_mutator *load_custom_mutator(afl_state_t *afl, const char *fn) {
|
||||
|
||||
if (notrim) {
|
||||
|
||||
if (mutator->afl_custom_init_trim || mutator->afl_custom_trim ||
|
||||
mutator->afl_custom_post_trim) {
|
||||
|
||||
WARNF(
|
||||
"Custom mutator does not implement all three trim APIs, standard "
|
||||
"trimming will be used.");
|
||||
|
||||
}
|
||||
|
||||
mutator->afl_custom_init_trim = NULL;
|
||||
mutator->afl_custom_trim = NULL;
|
||||
mutator->afl_custom_post_trim = NULL;
|
||||
ACTF(
|
||||
"Custom mutator does not implement all three trim APIs, standard "
|
||||
"trimming will be used.");
|
||||
|
||||
}
|
||||
|
||||
|
@ -5691,6 +5691,7 @@ pacemaker_fuzzing:
|
||||
|
||||
} /* block */
|
||||
|
||||
++afl->queue_cur->fuzz_level;
|
||||
return ret_val;
|
||||
|
||||
}
|
||||
@ -5804,7 +5805,7 @@ void pso_updating(afl_state_t *afl) {
|
||||
depending on the configuration. */
|
||||
u8 fuzz_one(afl_state_t *afl) {
|
||||
|
||||
int key_val_lv_1 = 0, key_val_lv_2 = 0;
|
||||
int key_val_lv_1 = -1, key_val_lv_2 = -1;
|
||||
|
||||
#ifdef _AFL_DOCUMENT_MUTATIONS
|
||||
|
||||
@ -5851,6 +5852,9 @@ u8 fuzz_one(afl_state_t *afl) {
|
||||
|
||||
}
|
||||
|
||||
if (unlikely(key_val_lv_1 == -1)) { key_val_lv_1 = 0; }
|
||||
if (likely(key_val_lv_2 == -1)) { key_val_lv_2 = 0; }
|
||||
|
||||
return (key_val_lv_1 | key_val_lv_2);
|
||||
|
||||
}
|
||||
|
@ -1028,10 +1028,16 @@ u32 calculate_score(afl_state_t *afl, struct queue_entry *q) {
|
||||
break;
|
||||
|
||||
case LIN:
|
||||
// Don't modify perf_score for unfuzzed seeds
|
||||
if (!q->fuzz_level) break;
|
||||
|
||||
factor = q->fuzz_level / (afl->n_fuzz[q->n_fuzz_entry] + 1);
|
||||
break;
|
||||
|
||||
case QUAD:
|
||||
// Don't modify perf_score for unfuzzed seeds
|
||||
if (!q->fuzz_level) break;
|
||||
|
||||
factor =
|
||||
q->fuzz_level * q->fuzz_level / (afl->n_fuzz[q->n_fuzz_entry] + 1);
|
||||
break;
|
||||
|
@ -1624,6 +1624,8 @@ static void try_to_add_to_dictN(afl_state_t *afl, u128 v, u8 size) {
|
||||
|
||||
}
|
||||
|
||||
if (cons_0 > 1 || cons_ff > 1) { return; }
|
||||
|
||||
}
|
||||
|
||||
maybe_add_auto(afl, (u8 *)&v + off, size);
|
||||
|
@ -1298,6 +1298,12 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
|
||||
}
|
||||
|
||||
if (afl->is_main_node == 1 && afl->schedule != FAST && afl->schedule != EXPLORE) {
|
||||
|
||||
FATAL("-M is compatible only with fast and explore -p power schedules");
|
||||
|
||||
}
|
||||
|
||||
if (optind == argc || !afl->in_dir || !afl->out_dir || show_help) {
|
||||
|
||||
usage(argv[0], show_help);
|
||||
@ -1346,12 +1352,11 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
}
|
||||
|
||||
#endif
|
||||
if (afl->sync_id && afl->is_main_node &&
|
||||
afl->afl_env.afl_custom_mutator_only) {
|
||||
if (!afl->skip_deterministic && afl->afl_env.afl_custom_mutator_only) {
|
||||
|
||||
WARNF(
|
||||
"Using -M main node with the AFL_CUSTOM_MUTATOR_ONLY mutator options "
|
||||
"will result in no deterministic mutations being done!");
|
||||
FATAL(
|
||||
"Using -D determinstic fuzzing is incompatible with "
|
||||
"AFL_CUSTOM_MUTATOR_ONLY!");
|
||||
|
||||
}
|
||||
|
||||
@ -2106,6 +2111,7 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
afl->cmplog_fsrv.qemu_mode = afl->fsrv.qemu_mode;
|
||||
afl->cmplog_fsrv.frida_mode = afl->fsrv.frida_mode;
|
||||
afl->cmplog_fsrv.cmplog_binary = afl->cmplog_binary;
|
||||
afl->cmplog_fsrv.target_path = afl->fsrv.target_path;
|
||||
afl->cmplog_fsrv.init_child_func = cmplog_exec_child;
|
||||
|
||||
if ((map_size <= DEFAULT_SHMEM_SIZE ||
|
||||
@ -2574,6 +2580,7 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
skipped_fuzz = fuzz_one(afl);
|
||||
#ifdef INTROSPECTION
|
||||
++afl->queue_cur->stats_selected;
|
||||
|
||||
if (unlikely(skipped_fuzz)) {
|
||||
|
||||
++afl->queue_cur->stats_skipped;
|
||||
|
@ -92,7 +92,7 @@ static u32 measure_preemption(u32 target_ms) {
|
||||
volatile u32 v1, v2 = 0;
|
||||
|
||||
u64 st_t, en_t, st_c, en_c, real_delta, slice_delta;
|
||||
s32 loop_repeats = 0;
|
||||
//s32 loop_repeats = 0;
|
||||
|
||||
st_t = get_cur_time_us();
|
||||
st_c = get_cpu_usage_us();
|
||||
@ -113,7 +113,7 @@ repeat_loop:
|
||||
|
||||
if (en_t - st_t < target_ms * 1000) {
|
||||
|
||||
loop_repeats++;
|
||||
//loop_repeats++;
|
||||
goto repeat_loop;
|
||||
|
||||
}
|
||||
@ -214,7 +214,13 @@ int main(int argc, char **argv) {
|
||||
#if defined(__linux__)
|
||||
if (sched_setaffinity(0, sizeof(c), &c)) {
|
||||
|
||||
PFATAL("sched_setaffinity failed for cpu %d", i);
|
||||
const char *error_code = "Unkown error code";
|
||||
if (errno == EFAULT) error_code = "EFAULT";
|
||||
if (errno == EINVAL) error_code = "EINVAL";
|
||||
if (errno == EPERM) error_code = "EPERM";
|
||||
if (errno == ESRCH) error_code = "ESRCH";
|
||||
|
||||
PFATAL("sched_setaffinity failed for cpu %d, error: %s", i, error_code);
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user