diff options
author | hexcoder- <heiko@hexco.de> | 2019-07-13 08:09:19 +0200 |
---|---|---|
committer | Hexcoder <heiko@hexco.de> | 2019-07-13 09:39:51 +0200 |
commit | f45332e1ab1f7b82c38c6fcc3c451fca35d5a9ce (patch) | |
tree | 1cb23f960ccb9e4881e5e0979a78bb3c4f803262 /afl-showmap.c | |
parent | d9c70c7b8cdcde0827e167c61f60f862bc9a3ba8 (diff) | |
download | afl++-f45332e1ab1f7b82c38c6fcc3c451fca35d5a9ce.tar.gz |
portability fix: getcwd(NULL, 0) is a non-POSIX glibc extension. Refactor
detect_file_args() in a separate file in order to avoid multiple copies.
Diffstat (limited to 'afl-showmap.c')
-rw-r--r-- | afl-showmap.c | 47 |
1 files changed, 2 insertions, 45 deletions
diff --git a/afl-showmap.c b/afl-showmap.c index a5d7568a..1382e5f0 100644 --- a/afl-showmap.c +++ b/afl-showmap.c @@ -29,6 +29,7 @@ #include "alloc-inl.h" #include "hash.h" #include "sharedmem.h" +#include "afl-common.h" #include <stdio.h> #include <unistd.h> @@ -380,50 +381,6 @@ static void setup_signal_handlers(void) { } -/* Detect @@ in args. */ - -static void detect_file_args(char** argv) { - - u32 i = 0; - u8* cwd = getcwd(NULL, 0); - - if (!cwd) PFATAL("getcwd() failed"); - - while (argv[i]) { - - u8* aa_loc = strstr(argv[i], "@@"); - - if (aa_loc) { - - u8 *aa_subst, *n_arg; - - if (!at_file) FATAL("@@ syntax is not supported by this tool."); - - /* Be sure that we're always using fully-qualified paths. */ - - if (at_file[0] == '/') aa_subst = at_file; - else aa_subst = alloc_printf("%s/%s", cwd, at_file); - - /* Construct a replacement argv value. */ - - *aa_loc = 0; - n_arg = alloc_printf("%s%s%s", argv[i], aa_subst, aa_loc + 2); - argv[i] = n_arg; - *aa_loc = '@'; - - if (at_file[0] != '/') ck_free(aa_subst); - - } - - i++; - - } - - free(cwd); /* not tracked */ - -} - - /* Show banner. */ static void show_banner(void) { @@ -720,7 +677,7 @@ int main(int argc, char** argv) { ACTF("Executing '%s'...\n", target_path); } - detect_file_args(argv + optind); + detect_file_args(argv + optind, at_file); if (qemu_mode) use_argv = get_qemu_argv(argv[0], argv + optind, argc - optind); |