Skip to content

Commit

Permalink
caddyfile: Fix comma edgecase in address parsing (#6616)
Browse files Browse the repository at this point in the history
  • Loading branch information
francislavoie authored Oct 10, 2024
1 parent c8a76d0 commit ef4e022
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
9 changes: 7 additions & 2 deletions caddyconfig/caddyfile/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -264,8 +264,13 @@ func (p *parser) addresses() error {
return p.Errf("Site addresses cannot contain a comma ',': '%s' - put a space after the comma to separate site addresses", value)
}

token.Text = value
p.block.Keys = append(p.block.Keys, token)
// After the above, a comma surrounded by spaces would result
// in an empty token which we should ignore
if value != "" {
// Add the token as a site address
token.Text = value
p.block.Keys = append(p.block.Keys, token)
}
}

// Advance token and possibly break out of loop or return error
Expand Down
8 changes: 6 additions & 2 deletions caddyconfig/caddyfile/parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,10 @@ func TestParseAll(t *testing.T) {
{"localhost:1234", "http://host2"},
}},

{`foo.example.com , example.com`, false, [][]string{
{"foo.example.com", "example.com"},
}},

{`localhost:1234, http://host2,`, true, [][]string{}},

{`http://host1.com, http://host2.com {
Expand Down Expand Up @@ -614,8 +618,8 @@ func TestParseAll(t *testing.T) {
}
for j, block := range blocks {
if len(block.Keys) != len(test.keys[j]) {
t.Errorf("Test %d: Expected %d keys in block %d, got %d",
i, len(test.keys[j]), j, len(block.Keys))
t.Errorf("Test %d: Expected %d keys in block %d, got %d: %v",
i, len(test.keys[j]), j, len(block.Keys), block.Keys)
continue
}
for k, addr := range block.GetKeysText() {
Expand Down

0 comments on commit ef4e022

Please sign in to comment.