From 712b13756a09014ef730c8f9b96da4dc2f09b762 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 11 Nov 2022 14:59:54 -0500 Subject: exec: Fix index overflow parsing -exec + --- src/exec.c | 2 +- tests/posix/exec_plus_nothing.sh | 2 ++ tests/posix/ok_plus_nothing.sh | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 tests/posix/exec_plus_nothing.sh create mode 100644 tests/posix/ok_plus_nothing.sh 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 + -- cgit v1.2.3