summaryrefslogtreecommitdiff
path: root/mac/arch.c
diff options
context:
space:
mode:
authorRobert Swiecki <robert@swiecki.net>2018-01-10 14:58:44 +0100
committerRobert Swiecki <robert@swiecki.net>2018-01-10 14:58:44 +0100
commit2aeff25712894aa337f6fe30842392762b3b60c7 (patch)
treed7ae3ba5c8e0164cdf9015ffe5c4051aa21e170c /mac/arch.c
parent9a7539606fdd7165af6196fce2b5a9cb7f0ec117 (diff)
downloadhonggfuzz-2aeff25712894aa337f6fe30842392762b3b60c7.tar.gz
arch: simplify arch handling a bit
Diffstat (limited to 'mac/arch.c')
-rw-r--r--mac/arch.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/mac/arch.c b/mac/arch.c
index 4c5362fa..364f5a90 100644
--- a/mac/arch.c
+++ b/mac/arch.c
@@ -298,24 +298,23 @@ pid_t arch_fork(run_t* run HF_ATTR_UNUSED) { return fork(); }
bool arch_launchChild(run_t* run) {
#define ARGS_MAX 512
const char* args[ARGS_MAX + 2];
- char argData[PATH_MAX] = {0};
- int x;
+ char argData[PATH_MAX];
- for (x = 0; x < ARGS_MAX && run->global->exe.cmdline[x]; x++) {
- if (!run->global->exe.fuzzStdin &&
- strcmp(run->global->exe.cmdline[x], _HF_FILE_PLACEHOLDER) == 0) {
- args[x] = run->fileName;
- } else if (!run->global->exe.fuzzStdin &&
- strstr(run->global->exe.cmdline[x], _HF_FILE_PLACEHOLDER)) {
+ int x;
+ for (x = 0; x < ARGS_MAX && x < run->global->exe.argc; x++) {
+ if (run->global->persistent || run->global->exe.fuzzStdin) {
+ args[x] = run->global->exe.cmdline[x];
+ } else if (!strcmp(run->global->exe.cmdline[x], _HF_FILE_PLACEHOLDER)) {
+ args[x] = (char*)run->fileName;
+ } else if (strstr(run->global->exe.cmdline[x], _HF_FILE_PLACEHOLDER)) {
const char* off = strstr(run->global->exe.cmdline[x], _HF_FILE_PLACEHOLDER);
- snprintf(argData, PATH_MAX, "%.*s%s", (int)(off - run->global->exe.cmdline[x]),
+ snprintf(argData, sizeof(argData), "%.*s%s", (int)(off - run->global->exe.cmdline[x]),
run->global->exe.cmdline[x], run->fileName);
args[x] = argData;
} else {
args[x] = run->global->exe.cmdline[x];
}
}
-
args[x++] = NULL;
LOG_D("Launching '%s' on file '%s'", args[0], run->fileName);