about summary refs log tree commit diff
path: root/afl-showmap.c
diff options
context:
space:
mode:
authorhexcoder- <heiko@hexco.de>2019-07-13 08:09:19 +0200
committerHexcoder <heiko@hexco.de>2019-07-13 09:39:51 +0200
commitf45332e1ab1f7b82c38c6fcc3c451fca35d5a9ce (patch)
tree1cb23f960ccb9e4881e5e0979a78bb3c4f803262 /afl-showmap.c
parentd9c70c7b8cdcde0827e167c61f60f862bc9a3ba8 (diff)
downloadafl++-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.c47
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);