diff options
author | van Hauser <vh@thc.org> | 2021-11-16 10:51:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-16 10:51:19 +0100 |
commit | 464f1a78dff320609d4580a7b2493dc5b527df67 (patch) | |
tree | 828fae4c389535372e8bd61ddc8a4c02b751ddac /src/afl-common.c | |
parent | 02b621e83c5242493dd6353a158414083885623a (diff) | |
parent | 3f864fa129c821ff35771ad0fe74c9e1ec88ee08 (diff) | |
download | afl++-464f1a78dff320609d4580a7b2493dc5b527df67.tar.gz |
Merge pull request #1156 from retrage/retrage/coresight-mode-pr
Add CoreSight mode support
Diffstat (limited to 'src/afl-common.c')
-rw-r--r-- | src/afl-common.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/afl-common.c b/src/afl-common.c index ec3b2f3f..6c2d0753 100644 --- a/src/afl-common.c +++ b/src/afl-common.c @@ -204,6 +204,35 @@ void argv_cpy_free(char **argv) { } +/* Rewrite argv for CoreSight process tracer. */ + +char **get_cs_argv(u8 *own_loc, u8 **target_path_p, int argc, char **argv) { + + if (unlikely(getenv("AFL_CS_CUSTOM_BIN"))) { + + WARNF( + "AFL_CS_CUSTOM_BIN is enabled. " + "You must run your target under afl-cs-proxy on your own!"); + return argv; + + } + + char **new_argv = ck_alloc(sizeof(char *) * (argc + 4)); + if (unlikely(!new_argv)) { FATAL("Illegal amount of arguments specified"); } + + memcpy(&new_argv[3], &argv[1], (int)(sizeof(char *)) * (argc - 1)); + new_argv[argc + 3] = NULL; + + new_argv[2] = *target_path_p; + new_argv[1] = "--"; + + /* Now we need to actually find the cs-proxy binary to put in argv[0]. */ + + *target_path_p = new_argv[0] = find_afl_binary(own_loc, "afl-cs-proxy"); + return new_argv; + +} + /* Rewrite argv for QEMU. */ char **get_qemu_argv(u8 *own_loc, u8 **target_path_p, int argc, char **argv) { |