diff options
author | Francis Lavoie <[email protected]> | 2020-09-22 19:37:15 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2020-09-22 17:37:15 -0600 |
commit | be6daa5fd46edc9f66a5129347482b38e22bf103 (patch) | |
tree | 4c1bdbb1bb1cabfe90146f674819ebaf3e52759e /caddyconfig | |
parent | fe27f9cf0c7f53c891c35fbcf6a6b3219e85fd0a (diff) | |
download | caddy-be6daa5fd46edc9f66a5129347482b38e22bf103.tar.gz caddy-be6daa5fd46edc9f66a5129347482b38e22bf103.zip |
httpcaddyfile: Fix panic when parsing route with matchers (#3746)
Fixes #3745
Diffstat (limited to 'caddyconfig')
-rw-r--r-- | caddyconfig/httpcaddyfile/directives.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/caddyconfig/httpcaddyfile/directives.go b/caddyconfig/httpcaddyfile/directives.go index e9ba44c8e..5d9a33913 100644 --- a/caddyconfig/httpcaddyfile/directives.go +++ b/caddyconfig/httpcaddyfile/directives.go @@ -304,13 +304,17 @@ func parseSegmentAsConfig(h Helper) ([]ConfigValue, error) { } // find and extract any embedded matcher definitions in this scope - for i, seg := range segments { + for i := 0; i < len(segments); i++ { + seg := segments[i] if strings.HasPrefix(seg.Directive(), matcherPrefix) { + // parse, then add the matcher to matcherDefs err := parseMatcherDefinitions(caddyfile.NewDispenser(seg), matcherDefs) if err != nil { return nil, err } + // remove the matcher segment (consumed), then step back the loop segments = append(segments[:i], segments[i+1:]...) + i-- } } |