aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOren Shomron <[email protected]>2018-08-31 11:14:32 -0400
committerEric Paris <[email protected]>2018-08-31 11:14:32 -0400
commit298182f68c66c05229eb03ac171abe6e309ee79a (patch)
tree1c1207ca641a501d4e494c637ff50fdb961f4e1c
parentd929dcbb10863323c436af3cf76cb16a6dfc9b29 (diff)
Fix panic when parsing unknown flag followed by empty argument (#173)v1.0.3
Signed-off-by: Oren Shomron <[email protected]>
-rw-r--r--flag.go7
-rw-r--r--flag_test.go5
2 files changed, 10 insertions, 2 deletions
diff --git a/flag.go b/flag.go
index 5cc710c..9beeda8 100644
--- a/flag.go
+++ b/flag.go
@@ -925,13 +925,16 @@ func stripUnknownFlagValue(args []string) []string {
}
first := args[0]
- if first[0] == '-' {
+ if len(first) > 0 && first[0] == '-' {
//--unknown --next-flag ...
return args
}
//--unknown arg ... (args will be arg ...)
- return args[1:]
+ if len(args) > 1 {
+ return args[1:]
+ }
+ return nil
}
func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) {
diff --git a/flag_test.go b/flag_test.go
index f600f0a..7d02dbc 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -431,6 +431,11 @@ func testParseWithUnknownFlags(f *FlagSet, t *testing.T) {
"--unknown8=unknown8value",
"--boole",
"--unknown6",
+ "",
+ "-uuuuu",
+ "",
+ "--unknown10",
+ "--unknown11",
}
want := []string{
"boola", "true",