aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Libby <rlibby@FreeBSD.org>2021-02-24 23:56:16 +0000
committerRyan Libby <rlibby@FreeBSD.org>2021-02-24 23:56:16 +0000
commitd85c9cef1380f4f135aee95ad8c1f4d3eca74c5b (patch)
tree081373e690c86570a01701c2ce1d3770d0d93754
parent14b5a3c7d5c034c2a5a487b5e2d0de79c2801a65 (diff)
downloadsrc-d85c9cef1380f4f135aee95ad8c1f4d3eca74c5b.tar.gz
src-d85c9cef1380f4f135aee95ad8c1f4d3eca74c5b.zip
ddb: reliably fail with ambiguous commands
db_cmd_match had an even/odd bug, where if a third command was partially matched (or any odd number greater than one) the search result would be set back from CMD_AMBIGUOUS to CMD_FOUND, causing the last command in the list to be executed instead of failing the match. Reported by: mlaier Reviewed by: markj, mlaier, vangyzen Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D28659
-rw-r--r--sys/ddb/db_command.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c
index fedec1dd33a4..e1f822ef44d8 100644
--- a/sys/ddb/db_command.c
+++ b/sys/ddb/db_command.c
@@ -293,7 +293,7 @@ db_cmd_match(char *name, struct command *cmd, struct command **cmdp,
*resultp = CMD_AMBIGUOUS;
/* but keep looking for a full match -
this lets us match single letters */
- } else {
+ } else if (*resultp == CMD_NONE) {
*cmdp = cmd;
*resultp = CMD_FOUND;
}