diff options
author | 2019-07-12 15:22:45 +0300 | |
---|---|---|
committer | 2019-07-12 12:22:45 +0000 | |
commit | 69a2397bf56c50959a14fe770e82e45a80bf4416 (patch) | |
tree | c047054cef5cb29f90af590f311cf850dbb95823 /plugin/rewrite | |
parent | a5c405f6d7a019e8dec46eabdcb801a8870a38a1 (diff) | |
download | coredns-69a2397bf56c50959a14fe770e82e45a80bf4416.tar.gz coredns-69a2397bf56c50959a14fe770e82e45a80bf4416.tar.zst coredns-69a2397bf56c50959a14fe770e82e45a80bf4416.zip |
plugin/rewrite: fix domain length validation (#2995)
* unit test
* fix domain length validation
* code optimization
* remove unit test
Diffstat (limited to 'plugin/rewrite')
-rw-r--r-- | plugin/rewrite/name.go | 15 | ||||
-rw-r--r-- | plugin/rewrite/rewrite.go | 7 |
2 files changed, 3 insertions, 19 deletions
diff --git a/plugin/rewrite/name.go b/plugin/rewrite/name.go index 86a5f1ecd..e1c2a1114 100644 --- a/plugin/rewrite/name.go +++ b/plugin/rewrite/name.go @@ -9,8 +9,6 @@ import ( "github.com/coredns/coredns/plugin" "github.com/coredns/coredns/request" - - "github.com/miekg/dns" ) type exactNameRule struct { @@ -264,19 +262,6 @@ func (rule *substringNameRule) GetResponseRule() ResponseRule { return ResponseR // GetResponseRule return a rule to rewrite the response with. func (rule *regexNameRule) GetResponseRule() ResponseRule { return rule.ResponseRule } -// validName returns true if s is valid domain name and shorter than 256 characters. -func validName(s string) bool { - _, ok := dns.IsDomainName(s) - if !ok { - return false - } - if len(dns.Name(s).String()) > 255 { - return false - } - - return true -} - // hasClosingDot return true if s has a closing dot at the end. func hasClosingDot(s string) bool { if strings.HasSuffix(s, ".") { diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go index 906523326..e72e975b2 100644 --- a/plugin/rewrite/rewrite.go +++ b/plugin/rewrite/rewrite.go @@ -44,11 +44,10 @@ func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg for _, rule := range rw.Rules { switch result := rule.Rewrite(ctx, state); result { case RewriteDone: - if !validName(state.Req.Question[0].Name) { - x := state.Req.Question[0].Name - log.Errorf("Invalid name after rewrite: %s", x) + if _, ok := dns.IsDomainName(state.Req.Question[0].Name); !ok { + err := fmt.Errorf("invalid name after rewrite: %s", state.Req.Question[0].Name) state.Req.Question[0] = wr.originalQuestion - return dns.RcodeServerFailure, fmt.Errorf("invalid name after rewrite: %s", x) + return dns.RcodeServerFailure, err } respRule := rule.GetResponseRule() if respRule.Active { |