AFL_PRELOAD -> QEMU_SET_ENV for afl-fuzz,afl-showmap,afl-analyze,afl-tmin

This commit is contained in:
Andrea Fioraldi
2019-12-25 10:35:49 +01:00
parent 67b6298895
commit 9ed4bfbca8
4 changed files with 105 additions and 21 deletions

View File

@ -714,21 +714,24 @@ int main(int argc, char** argv) {
if (qemu_mode) {
char* qemu_preload = getenv("QEMU_SET_ENV");
char buf[4096];
if (qemu_preload) {
snprintf(buf, sizeof(buf), "%s,LD_PRELOAD=%s", qemu_preload,
getenv("AFL_PRELOAD"));
} else {
snprintf(buf, sizeof(buf), "LD_PRELOAD=%s", getenv("AFL_PRELOAD"));
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", qemu_preload, afl_preload);
else
buf = alloc_printf("LD_PRELOAD=%s", afl_preload);
setenv("QEMU_SET_ENV", buf, 1);
ck_free(buf);
} else {