diff options
author | 2018-07-13 14:32:07 +0100 | |
---|---|---|
committer | 2018-07-13 09:32:07 -0400 | |
commit | d9b9a955ba900f2e56f1cc160e2cce13a239b18b (patch) | |
tree | dae0c50a6aadccc673b00bea81491251db92bc5e /plugin/rewrite/rewrite.go | |
parent | 8d9cf95ee8b52b730e5d0f4336a2832e3c433371 (diff) | |
download | coredns-d9b9a955ba900f2e56f1cc160e2cce13a239b18b.tar.gz coredns-d9b9a955ba900f2e56f1cc160e2cce13a239b18b.tar.zst coredns-d9b9a955ba900f2e56f1cc160e2cce13a239b18b.zip |
plugin/rewrite: prevent illegal names (#1972)
Log and returns an error when the name rewrite creates a name that is
illegal. Add test in name_test.go to see if an error is returned.
Possible followup could be the only check this if a name-rewrite is
done.
Fixes: #1638
Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/rewrite/rewrite.go')
-rw-r--r-- | plugin/rewrite/rewrite.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go index b4bdd5e20..643f2d7c9 100644 --- a/plugin/rewrite/rewrite.go +++ b/plugin/rewrite/rewrite.go @@ -44,6 +44,13 @@ 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) + state.Req.Question[0] = wr.originalQuestion + return dns.RcodeServerFailure, fmt.Errorf("invalid name after rewrite: %s", x) + } + respRule := rule.GetResponseRule() if respRule.Active == true { wr.ResponseRewrite = true |