mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-13 02:28:09 +00:00
Remove AFL_PRELOAD and AFL_USE_QASAN handlers
These are now processed in afl-qemu-trace so that the "copy+paste" code that is in all of the other AFL tools can be removed. This also allows the AFL_USE_QASAN flag to work the same when used with tools like afl-fuzz as it does with afl-qemu-trace. This is important in situations where loading the QASAN library changes the address of your desired entrypoint, or for crash validation using the same environment that afl-fuzz was using. With this change, the same set of environment variables can be used in exactly the same way between afl-fuzz, afl-showmap, and afl-qemu-trace, and you will get exactly the same guest environment.
This commit is contained in:
@ -753,38 +753,7 @@ static void set_up_environment(afl_forkserver_t *fsrv) {
|
||||
|
||||
if (fsrv->qemu_mode) {
|
||||
|
||||
u8 *qemu_preload = getenv("QEMU_SET_ENV");
|
||||
u8 *afl_preload = getenv("AFL_PRELOAD");
|
||||
u8 *buf;
|
||||
|
||||
s32 i, afl_preload_size = strlen(afl_preload);
|
||||
for (i = 0; i < afl_preload_size; ++i) {
|
||||
|
||||
if (afl_preload[i] == ',') {
|
||||
|
||||
PFATAL(
|
||||
"Comma (',') is not allowed in AFL_PRELOAD when -Q is "
|
||||
"specified!");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (qemu_preload) {
|
||||
|
||||
buf = alloc_printf("%s,LD_PRELOAD=%s,DYLD_INSERT_LIBRARIES=%s",
|
||||
qemu_preload, afl_preload, afl_preload);
|
||||
|
||||
} else {
|
||||
|
||||
buf = alloc_printf("LD_PRELOAD=%s,DYLD_INSERT_LIBRARIES=%s",
|
||||
afl_preload, afl_preload);
|
||||
|
||||
}
|
||||
|
||||
setenv("QEMU_SET_ENV", buf, 1);
|
||||
|
||||
ck_free(buf);
|
||||
/* afl-qemu-trace takes care of converting AFL_PRELOAD. */
|
||||
|
||||
} else {
|
||||
|
||||
@ -1079,31 +1048,6 @@ int main(int argc, char **argv_orig, char **envp) {
|
||||
check_environment_vars(envp);
|
||||
setenv("AFL_NO_AUTODICT", "1", 1);
|
||||
|
||||
if (fsrv->qemu_mode && getenv("AFL_USE_QASAN")) {
|
||||
|
||||
u8 *preload = getenv("AFL_PRELOAD");
|
||||
u8 *libqasan = get_libqasan_path(argv_orig[0]);
|
||||
|
||||
if (!preload) {
|
||||
|
||||
setenv("AFL_PRELOAD", libqasan, 0);
|
||||
|
||||
} else {
|
||||
|
||||
u8 *result = ck_alloc(strlen(libqasan) + strlen(preload) + 2);
|
||||
strcpy(result, libqasan);
|
||||
strcat(result, " ");
|
||||
strcat(result, preload);
|
||||
|
||||
setenv("AFL_PRELOAD", result, 1);
|
||||
ck_free(result);
|
||||
|
||||
}
|
||||
|
||||
ck_free(libqasan);
|
||||
|
||||
}
|
||||
|
||||
/* initialize cmplog_mode */
|
||||
shm.cmplog_mode = 0;
|
||||
|
||||
|
Reference in New Issue
Block a user