summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2015-10-21 22:05:50 +0800
committerMatt Johnston <matt@ucc.asn.au>2015-10-21 22:05:50 +0800
commit23cc2bfb8cf82d378c4e678b9505ec328998aee7 (patch)
tree6bc7e7501480e71eaa9a2fe142225e5d02522fd7
parent9e379835c4ebbfef41440416fc72518e48ea8dde (diff)
don't silently ignore extra flag arguments
-rw-r--r--cli-runopts.c8
-rw-r--r--dbclient.12
-rw-r--r--dropbear.82
-rw-r--r--svr-runopts.c7
4 files changed, 14 insertions, 5 deletions
diff --git a/cli-runopts.c b/cli-runopts.c
index 58b64ce..b251550 100644
--- a/cli-runopts.c
+++ b/cli-runopts.c
@@ -218,8 +218,12 @@ void cli_getopts(int argc, char ** argv) {
if (argv[i][0] == '-') {
/* A flag *waves* */
-
- switch (argv[i][1]) {
+ char c = argv[i][1];
+ if (strlen(argv[i]) != 2) {
+ /* Ensure only one flag per hyphen. '?' falls through to print help */
+ c = '?';
+ }
+ switch (c) {
case 'y': /* always accept the remote hostkey */
if (cli_opts.always_accept_key) {
/* twice means no checking at all */
diff --git a/dbclient.1 b/dbclient.1
index cf9c647..c33f955 100644
--- a/dbclient.1
+++ b/dbclient.1
@@ -3,7 +3,7 @@
dbclient \- lightweight SSH client
.SH SYNOPSIS
.B dbclient
-[\-Tt] [\-p
+[flag arguments] [\-p
.I port\fR] [\-i
.I id\fR] [\-L
.I l\fR:\fIh\fR:\fIr\fR] [\-R
diff --git a/dropbear.8 b/dropbear.8
index d129a5d..501cecf 100644
--- a/dropbear.8
+++ b/dropbear.8
@@ -3,7 +3,7 @@
dropbear \- lightweight SSH server
.SH SYNOPSIS
.B dropbear
-[\-RFEmwsgjki] [\-b
+[flag arguments] [\-b
.I banner\fR]
[\-r
.I hostkeyfile\fR] [\-p
diff --git a/svr-runopts.c b/svr-runopts.c
index 09fc9af..acb7cc1 100644
--- a/svr-runopts.c
+++ b/svr-runopts.c
@@ -189,7 +189,12 @@ void svr_getopts(int argc, char ** argv) {
}
if (argv[i][0] == '-') {
- switch (argv[i][1]) {
+ char c = argv[i][1];
+ if (strlen(argv[i]) != 2) {
+ /* Ensure only one flag per hyphen. '?' falls through to print help */
+ c = '?';
+ }
+ switch (c) {
case 'b':
next = &svr_opts.bannerfile;
break;