aboutsummaryrefslogtreecommitdiff
path: root/plugin/rewrite/rewrite.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2018-07-13 14:32:07 +0100
committerGravatar Paul Greenberg <greenpau@users.noreply.github.com> 2018-07-13 09:32:07 -0400
commitd9b9a955ba900f2e56f1cc160e2cce13a239b18b (patch)
treedae0c50a6aadccc673b00bea81491251db92bc5e /plugin/rewrite/rewrite.go
parent8d9cf95ee8b52b730e5d0f4336a2832e3c433371 (diff)
downloadcoredns-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.go7
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