aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
authorGravatar Chris O'Haver <cohaver@infoblox.com> 2021-01-21 03:59:58 -0500
committerGravatar GitHub <noreply@github.com> 2021-01-21 09:59:58 +0100
commit8b2ff6c3889e0c23dceef4b10a1b1de58e463cb9 (patch)
treed053293353f46b6a52785ce4bdff979337a38c4d /plugin
parent95622f4c9ae65de9465b5fb022711e95be4df2ce (diff)
downloadcoredns-8b2ff6c3889e0c23dceef4b10a1b1de58e463cb9.tar.gz
coredns-8b2ff6c3889e0c23dceef4b10a1b1de58e463cb9.tar.zst
coredns-8b2ff6c3889e0c23dceef4b10a1b1de58e463cb9.zip
make copies of RRs before returning them (#4409)
Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
Diffstat (limited to 'plugin')
-rw-r--r--plugin/file/lookup.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/plugin/file/lookup.go b/plugin/file/lookup.go
index 6eeb4c397..cba1eec50 100644
--- a/plugin/file/lookup.go
+++ b/plugin/file/lookup.go
@@ -171,7 +171,12 @@ func (z *Zone) Lookup(ctx context.Context, state request.Request, qname string)
return z.externalLookup(ctx, state, elem, rrs)
}
- rrs := elem.Type(qtype)
+ treeRRs := elem.Type(qtype)
+ // make a copy of the element RRs to prevent response writers from mutating the tree
+ rrs := make([]dns.RR, len(treeRRs))
+ for i, rr := range treeRRs {
+ rrs[i] = dns.Copy(rr)
+ }
// NODATA
if len(rrs) == 0 {