From 23526aec1d933b6362c80eaa084749a794d43aca Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Fri, 29 Sep 2017 22:27:40 +0100 Subject: [PATCH] core: drop invalid packets (#1123) We can still be on the receiving end of invalid packet. Drop them here. --- core/dnsserver/server.go | 7 +++++++ 1 file changed, 7 insertions(+) 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