summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/exec.c2
-rw-r--r--tests/posix/exec_plus_nothing.sh2
-rw-r--r--tests/posix/ok_plus_nothing.sh2
3 files changed, 5 insertions, 1 deletions
diff --git a/src/exec.c b/src/exec.c
index 759582e..a1cbde1 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -173,7 +173,7 @@ struct bfs_exec *bfs_exec_parse(const struct bfs_ctx *ctx, char **argv, enum bfs
goto fail;
} else if (strcmp(arg, ";") == 0) {
break;
- } else if (strcmp(arg, "+") == 0) {
+ } else if (execbuf->tmpl_argc > 0 && strcmp(arg, "+") == 0) {
const char *prev = execbuf->tmpl_argv[execbuf->tmpl_argc - 1];
if (!(execbuf->flags & BFS_EXEC_CONFIRM) && strcmp(prev, "{}") == 0) {
execbuf->flags |= BFS_EXEC_MULTI;
diff --git a/tests/posix/exec_plus_nothing.sh b/tests/posix/exec_plus_nothing.sh
new file mode 100644
index 0000000..ef01968
--- /dev/null
+++ b/tests/posix/exec_plus_nothing.sh
@@ -0,0 +1,2 @@
+# Regression test: don't look OOB for {} +
+fail invoke_bfs basic -exec +
diff --git a/tests/posix/ok_plus_nothing.sh b/tests/posix/ok_plus_nothing.sh
new file mode 100644
index 0000000..7cb7de5
--- /dev/null
+++ b/tests/posix/ok_plus_nothing.sh
@@ -0,0 +1,2 @@
+# Regression test: don't look OOB for {} +
+fail invoke_bfs basic -ok +