aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhexcoder- <heiko@hexco.de>2020-03-13 10:06:02 +0100
committerhexcoder- <heiko@hexco.de>2020-03-13 10:06:02 +0100
commitd2787519e33b339f4f2b03bdba32719a60a663a3 (patch)
tree202de98a39cb3448298d08e7b8e3b62838f785f0
parent23d0cea3c9e0306aed727798c87b4a392705c98c (diff)
downloadafl++-d2787519e33b339f4f2b03bdba32719a60a663a3.tar.gz
afl-common.c: ... but that breaks unicorn_mode, which it should not.
-rw-r--r--src/afl-common.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/afl-common.c b/src/afl-common.c
index 66afcd18..c2a4c476 100644
--- a/src/afl-common.c
+++ b/src/afl-common.c
@@ -57,36 +57,26 @@ void detect_file_args(char **argv, u8 *prog_in, u8 *use_stdin) {
if (aa_loc) {
- u8 *n_arg;
-
if (!prog_in) FATAL("@@ syntax is not supported by this tool.");
*use_stdin = 0;
if (prog_in[0] != 0) { // not afl-showmap special case
- s32 new_size;
+ u8 *n_arg;
/* Be sure that we're always using fully-qualified paths. */
*aa_loc = 0;
- if (prog_in[0] == '/') {
- new_size = snprintf(NULL, 0, "%s%s%s", argv[i], prog_in, aa_loc + 2);
- } else {
- new_size = snprintf(NULL, 0, "%s%s/%s%s", argv[i], cwd, prog_in, aa_loc + 2);
- }
- if (new_size < 0) PFATAL("snprintf() failed");
/* Construct a replacement argv value. */
- if ((n_arg = realloc(argv[i], new_size + 1)) == NULL) {
- PFATAL("realloc() failed");
- }
if (prog_in[0] == '/') {
- snprintf(n_arg, new_size, "%s%s%s", argv[i], prog_in, aa_loc + 2);
+ n_arg = alloc_printf("%s%s%s", argv[i], prog_in, aa_loc + 2);
} else {
- snprintf(n_arg, new_size, "%s%s/%s%s", argv[i], cwd, prog_in, aa_loc + 2);
+ n_arg = alloc_printf("%s%s/%s%s", argv[i], cwd, prog_in, aa_loc + 2);
}
+ free(argv[i]);
argv[i] = n_arg;
}