8000 extract function afl_fsrv_setup_preload · AFLplusplus/AFLplusplus@55d534c · GitHub
[go: up one dir, main page]

Skip to content

Commit 55d534c

Browse files
committed
extract function afl_fsrv_setup_preload
1 parent d02390e commit 55d534c

File tree

5 files changed

+65
-166
lines changed

5 files changed

+65
-166
lines changed

include/forkserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ typedef enum fsrv_run_result {
242242

243243
void afl_fsrv_init(afl_forkserver_t *fsrv);
244244
void afl_fsrv_init_dup(afl_forkserver_t *fsrv_to, afl_forkserver_t *from);
245+
void afl_fsrv_setup_preload(afl_forkserver_t *fsrv, char *argv0);
245246
void afl_fsrv_start(afl_forkserver_t *fsrv, char **argv,
246247
volatile u8 *stop_soon_p, u8 debug_child_output);
247248
u32 afl_fsrv_get_mapsize(afl_forkserver_t *fsrv, char **argv,

src/afl-analyze.c

Lines changed: 4 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ static bool edges_only, /* Ignore hit counts? */
7575
static volatile u8 stop_soon; /* Ctrl-C pressed? */
7676

7777
static u8 *target_path;
78-
static u8 frida_mode;
7978
static u8 qemu_mode;
8079
static u8 cs_mode;
8180
static u32 map_size = MAP_SIZE;
@@ -628,9 +627,7 @@ static void handle_stop_sig(int sig) {
628627

629628
static void set_up_environment(char **argv) {
630629

631-
u8 *x;
632-
char *afl_preload;
633-
char *frida_afl_preload = NULL;
630+
u8 *x;
634631

635632
fsrv.dev_null_fd = open("/dev/null", O_RDWR);
636633
if (fsrv.dev_null_fd < 0) { PFATAL("Unable to open /dev/null"); }
@@ -672,57 +669,7 @@ static void set_up_environment(char **argv) {
672669
}
673670

674671
set_sanitizer_defaults();
675-
676-
if (get_afl_env("AFL_PRELOAD")) {
677-
678-
if (qemu_mode) {
679-
680-
/* afl-qemu-trace takes care of converting AFL_PRELOAD. */
681-
682-
} else if (frida_mode) {
683-
684-
afl_preload = getenv("AFL_PRELOAD");
685-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
686-
if (afl_preload) {
687-
688-
frida_afl_preload = alloc_printf("%s:%s", afl_preload, frida_binary);
689-
690-
} else {
691-
692-
frida_afl_preload = alloc_printf("%s", frida_binary);
693-
694-
}
695-
696-
ck_free(frida_binary);
697-
698-
setenv("LD_PRELOAD", frida_afl_preload, 1);
699-
#ifdef __APPLE__
700-
setenv("DYLD_INSERT_LIBRARIES", frida_afl_preload, 1);
701-
#endif
702-
703-
} else {
704-
705-
/* CoreSight mode uses the default behavior. */
706-
707-
setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
708-
#ifdef __APPLE__
709-
setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
710-
#endif
711-
712-
}
713-
714-
} else if (frida_mode) {
715-
716-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
717-
setenv("LD_PRELOAD", frida_binary, 1);
718-
#ifdef __APPLE__
719-
setenv("DYLD_INSERT_LIBRARIES", frida_binary, 1);
720-
#endif
721-
ck_free(frida_binary);
722-
723-
}
724-
725-
if (frida_afl_preload) { ck_free(frida_afl_preload); }
672+
afl_fsrv_setup_preload(&fsrv, argv[0]);
726673

727674
}
728675

@@ -936,10 +883,9 @@ int main(int argc, char **argv_orig, char **envp) {
936883

937884
case 'O': /* FRIDA mode */
938885

939-
if (frida_mode) { FATAL("Multiple -O options not supported"); }
886+
if (fsrv.frida_mode) { FATAL("Multiple -O options not supported"); }
940887

941-
frida_mode = 1;
942-
fsrv.frida_mode = frida_mode;
888+
fsrv.frida_mode = true;
943889
setenv("AFL_FRIDA_INST_SEED", "1", 1);
944890

945891
break;

src/afl-forkserver.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,63 @@ void afl_fsrv_init_dup(afl_forkserver_t *fsrv_to, afl_forkserver_t *from) {
320320

321321
}
322322

323+
void afl_fsrv_setup_preload(afl_forkserver_t *fsrv, char *argv0) {
324+
325+
char *afl_preload;
326+
char *frida_afl_preload = NULL;
327+
if (get_afl_env("AFL_PRELOAD")) {
328+
329+
if (fsrv->qemu_mode) {
330+
331+
/* afl-qemu-trace takes care of converting AFL_PRELOAD. */
332+
333+
} else if (fsrv->frida_mode) {
334+
335+
afl_preload = getenv("AFL_PRELOAD");
336+
u8 *frida_binary = find_afl_binary(argv0, "afl-frida-trace.so");
337+
if (afl_preload) {
338+
339+
frida_afl_preload = alloc_printf("%s:%s", afl_preload, frida_binary);
340+
341+
} else {
342+
343+
frida_afl_preload = alloc_printf("%s", frida_binary);
344+
345+
}
346+
347+
ck_free(frida_binary);
348+
349+
setenv("LD_PRELOAD", frida_afl_preload, 1);
350+
#ifdef __APPLE__
351+
setenv("DYLD_INSERT_LIBRARIES", frida_afl_preload, 1);
352+
#endif
353+
354+
} else {
355+
356+
/* CoreSight mode uses the default behavior. */
357+
358+
setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
359+
#ifdef __APPLE__
360+
setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
361+
#endif
362+
363+
}
364+
365+
} else if (fsrv->frida_mode) {
366+
367+
u8 *frida_binary = find_afl_binary(argv0, "afl-frida-trace.so");
368+
setenv("LD_PRELOAD", frida_binary, 1);
369+
#ifdef __APPLE__
370+
setenv("DYLD_INSERT_LIBRARIES", frida_binary, 1);
371+
#endif
372+
ck_free(frida_binary);
373+
374+
}
375+
376+
if (frida_afl_preload) { ck_free(frida_afl_preload); }
377+
378+
}
379+
323380
/* Wrapper for select() and read(), reading a 32 bit var.
324381
Returns the time passed to read.
325382
If the wait times out, returns timeout_ms + 1;

src/afl-showmap.c

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -714,61 +714,8 @@ static void handle_stop_sig(int sig) {
714714

715715
static void set_up_environment(afl_forkserver_t *fsrv, char **argv) {
716716

717-
char *afl_preload;
718-
char *frida_afl_preload = NULL;
719-
720717
set_sanitizer_defaults();
721-
722-
if (get_afl_env("AFL_PRELOAD")) {
723-
724-
if (fsrv->qemu_mode) {
725-
726-
/* afl-qemu-trace takes care of converting AFL_PRELOAD. */
727-
728-
} else if (fsrv->frida_mode) {
729-
730-
afl_preload = getenv("AFL_PRELOAD");
731-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
732-
if (afl_preload) {
733-
734-
frida_afl_preload = alloc_printf("%s:%s", afl_preload, frida_binary);
735-
736-
} else {
737-
738-
frida_afl_preload = alloc_printf("%s", frida_binary);
739-
740-
}
741-
742-
ck_free(frida_binary);
74 E377 3-
744-
setenv("LD_PRELOAD", frida_afl_preload, 1);
745-
#ifdef __APPLE__
746-
setenv("DYLD_INSERT_LIBRARIES", frida_afl_preload, 1);
747-
#endif
748-
749-
} else {
750-
751-
/* CoreSight mode uses the default behavior. */
752-
753-
setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
754-
#ifdef __APPLE__
755-
setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
756-
#endif
757-
758-
}
759-
760-
} else if (fsrv->frida_mode) {
761-
762-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
763-
setenv("LD_PRELOAD", frida_binary, 1);
764-
#ifdef __APPLE__
765-
setenv("DYLD_INSERT_LIBRARIES", frida_binary, 1);
766-
#endif
767-
ck_free(frida_binary);
768-
769-
}
770-
771-
if (frida_afl_preload) { ck_free(frida_afl_preload); }
718+
afl_fsrv_setup_preload(fsrv, argv[0]);
772719

773720
}
774721

src/afl-tmin.c

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,7 @@ static void handle_stop_sig(int sig) {
899899

900900
static void set_up_environment(afl_forkserver_t *fsrv, char **argv) {
901901

902-
u8 *x;
903-
char *afl_preload;
904-
char *frida_afl_preload = NULL;
902+
u8 *x;
905903

906904
fsrv->dev_null_fd = open("/dev/null", O_RDWR);
907905
if (fsrv->dev_null_fd < 0) { PFATAL("Unable to open /dev/null"); }
@@ -945,57 +943,7 @@ static void set_up_environment(afl_forkserver_t *fsrv, char **argv) {
945943
}
946944

947945
set_sanitizer_defaults();
948-
949-
if (get_afl_env("AFL_PRELOAD")) {
950-
951-
if (fsrv->qemu_mode) {
952-
953-
/* afl-qemu-trace takes care of converting AFL_PRELOAD. */
954-
955-
} else if (fsrv->frida_mode) {
956-
957-
afl_preload = getenv("AFL_PRELOAD");
958-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
959-
if (afl_preload) {
960-
961-
frida_afl_preload = alloc_printf("%s:%s", afl_preload, frida_binary);
962-
963-
} else {
964-
965-
frida_afl_preload = alloc_printf("%s", frida_binary);
966-
967-
}
968-
969-
ck_free(frida_binary);
970-
971-
setenv("LD_PRELOAD", frida_afl_preload, 1);
972-
#ifdef __APPLE__
973-
setenv("DYLD_INSERT_LIBRARIES", frida_afl_preload, 1);
974-
#endif
975-
976-
} else {
977-
978-
/* CoreSight mode uses the default behavior. */
979-
980-
setenv("LD_PRELOAD", getenv("AFL_PRELOAD"), 1);
981-
#ifdef __APPLE__
982-
setenv("DYLD_INSERT_LIBRARIES", getenv("AFL_PRELOAD"), 1);
983-
#endif
984-
985-
}
986-
987-
} else if (fsrv->frida_mode) {
988-
989-
u8 *frida_binary = find_afl_binary(argv[0], "afl-frida-trace.so");
990-
setenv("LD_PRELOAD", frida_binary, 1);
991-
#ifdef __APPLE__
992-
setenv("DYLD_INSERT_LIBRARIES", frida_binary, 1);
993-
#endif
994-
ck_free(frida_binary);
995-
996-
}
997-
998-
if (frida_afl_preload) { ck_free(frida_afl_preload); }
946+
afl_fsrv_setup_preload(fsrv, argv[0]);
999947

1000948
}
1001949

0 commit comments

Comments
 (0)
0