aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Libby <rlibby@FreeBSD.org>2021-02-24 23:56:16 +0000
committerRyan Libby <rlibby@FreeBSD.org>2021-07-02 21:13:24 +0000
commit4544f2ea7dd98ad1f216b212a304817ee3bba1db (patch)
tree71477a245c5895a7bec7b697ab2c4f0fa877d402
parent65d3d849653629885bd1e5de13c99f22ca03b68e (diff)
downloadsrc-4544f2ea7dd98ad1f216b212a304817ee3bba1db.tar.gz
src-4544f2ea7dd98ad1f216b212a304817ee3bba1db.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 (cherry picked from commit d85c9cef1380f4f135aee95ad8c1f4d3eca74c5b)
-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 21ff75f78e6a..bfd6c700dc22 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;
}