diff --git a/config_test.go b/config_test.go index 88b6dcd..58e62c9 100644 --- a/config_test.go +++ b/config_test.go @@ -324,3 +324,17 @@ func TestMatchUnsupported(t *testing.T) { t.Errorf("wrong error: %v", err) } } + +func TestIndexInRange(t *testing.T) { + us := &UserSettings{ + userConfigFinder: testConfigFinder("testdata/config4"), + } + + user, err := us.GetStrict("wap", "User") + if err != nil { + t.Fatal(err) + } + if user != "root" { + t.Errorf("expected User to be %q, got %q", "root", user) + } +} diff --git a/parser.go b/parser.go index 79b26a8..b99ef7d 100644 --- a/parser.go +++ b/parser.go @@ -107,19 +107,17 @@ func (p *sshParser) parseKV() sshParserStateFn { } if strings.ToLower(key.val) == "host" { strPatterns := strings.Split(val.val, " ") + patterns := make([]*Pattern, 0) for i := range strPatterns { if strPatterns[i] == "" { - strPatterns = append(strPatterns[:i], strPatterns[i+1:]...) + continue } - } - patterns := make([]*Pattern, len(strPatterns)) - for i := range strPatterns { pat, err := NewPattern(strPatterns[i]) if err != nil { p.raiseErrorf(val, "Invalid host pattern: %v", err) return nil } - patterns[i] = pat + patterns = append(patterns, pat) } p.config.Hosts = append(p.config.Hosts, &Host{ Patterns: patterns, diff --git a/testdata/config4 b/testdata/config4 new file mode 100644 index 0000000..ea10ac0 --- /dev/null +++ b/testdata/config4 @@ -0,0 +1,4 @@ +# Extra space at end of line is important. +Host wap + User root + KexAlgorithms diffie-hellman-group1-sha1