diff options
author | Andrea Fioraldi <andreafioraldi@gmail.com> | 2021-01-29 18:52:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 18:52:45 +0100 |
commit | b06e3d9f2b4a4cff5d5ba90b89ea3edaaca3ca12 (patch) | |
tree | e644d51ded5c1b8b2d65635087129ada735d9ea0 /src/afl-common.c | |
parent | debd832f36b142e1b0b1bab8a6966848a51878f8 (diff) | |
parent | aaec45b6528e41a217de95ca3db1173fb2539672 (diff) | |
download | afl++-b06e3d9f2b4a4cff5d5ba90b89ea3edaaca3ca12.tar.gz |
Merge pull request #715 from AFLplusplus/qasan
Qasan
Diffstat (limited to 'src/afl-common.c')
-rw-r--r-- | src/afl-common.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/afl-common.c b/src/afl-common.c index cf996548..a69f2e97 100644 --- a/src/afl-common.c +++ b/src/afl-common.c @@ -334,6 +334,70 @@ char **get_wine_argv(u8 *own_loc, u8 **target_path_p, int argc, char **argv) { } +/* Get libqasan path. */ + +u8 *get_libqasan_path(u8 *own_loc) { + + if (!unlikely(own_loc)) { FATAL("BUG: param own_loc is NULL"); } + + u8 *tmp, *cp = NULL, *rsl, *own_copy; + + tmp = getenv("AFL_PATH"); + + if (tmp) { + + cp = alloc_printf("%s/libqasan.so", tmp); + + if (access(cp, X_OK)) { FATAL("Unable to find '%s'", tmp); } + + return cp; + + } + + own_copy = ck_strdup(own_loc); + rsl = strrchr(own_copy, '/'); + + if (rsl) { + + *rsl = 0; + + cp = alloc_printf("%s/libqasan.so", own_copy); + ck_free(own_copy); + + if (!access(cp, X_OK)) { + + return cp; + + } + + } else { + + ck_free(own_copy); + + } + + if (!access(BIN_PATH "/libqasan.so", X_OK)) { + + if (cp) { ck_free(cp); } + + return ck_strdup(BIN_PATH "/libqasan.so"); + + } + + SAYF("\n" cLRD "[-] " cRST + "Oops, unable to find the 'libqasan.so' binary. The binary must be " + "built\n" + " separately by following the instructions in " + "qemu_mode/libqasan/README.md. " + "If you\n" + " already have the binary installed, you may need to specify " + "AFL_PATH in the\n" + " environment.\n"); + + FATAL("Failed to locate 'libqasan.so'."); + +} + /* Find binary, used by analyze, showmap, tmin @returns the path, allocating the string */ |