Skip to content

Commit 298182f

Browse files
shomroneparis
authored andcommitted
Fix panic when parsing unknown flag followed by empty argument (#173)
Signed-off-by: Oren Shomron <[email protected]>
1 parent d929dcb commit 298182f

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

flag.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -925,13 +925,16 @@ func stripUnknownFlagValue(args []string) []string {
925925
}
926926

927927
first := args[0]
928-
if first[0] == '-' {
928+
if len(first) > 0 && first[0] == '-' {
929929
//--unknown --next-flag ...
930930
return args
931931
}
932932

933933
//--unknown arg ... (args will be arg ...)
934-
return args[1:]
934+
if len(args) > 1 {
935+
return args[1:]
936+
}
937+
return nil
935938
}
936939

937940
func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) {

flag_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,11 @@ func testParseWithUnknownFlags(f *FlagSet, t *testing.T) {
431431
"--unknown8=unknown8value",
432432
"--boole",
433433
"--unknown6",
434+
"",
435+
"-uuuuu",
436+
"",
437+
"--unknown10",
438+
"--unknown11",
434439
}
435440
want := []string{
436441
"boola", "true",

0 commit comments

Comments
 (0)