aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/dnsserver/server.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/core/dnsserver/server.go b/core/dnsserver/server.go
index f24b1dd60..721fd216e 100644
--- a/core/dnsserver/server.go
+++ b/core/dnsserver/server.go
@@ -179,6 +179,13 @@ func (s *Server) Address() string { return s.Addr }
// defined in the request so that the correct zone
// (configuration and plugin stack) will handle the request.
func (s *Server) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) {
+ // our dns library protects us against really invalid packets, we can still
+ // get semi valid packets. Drop them here.
+ if r == nil || len(r.Question) == 0 {
+ DefaultErrorFunc(w, r, dns.RcodeServerFailure)
+ return
+ }
+
if !s.debug {
defer func() {
// In case the user doesn't enable error plugin, we still