diff --git a/proxy/dns/dns.go b/proxy/dns/dns.go index efeb56cda..712197bee 100644 --- a/proxy/dns/dns.go +++ b/proxy/dns/dns.go @@ -381,6 +381,13 @@ func (h *Handler) handleIPQuery(id uint16, qType dnsmessage.Type, domain string, errors.LogInfoInner(context.Background(), err, "pack message") b.Release() timer.SetTimeout(0) + return + } + if len(msgBytes) > buf.Size { + b.Release() + timer.SetTimeout(0) + errors.LogError(context.Background(), "DNS response message too large") + return } b.Resize(0, int32(len(msgBytes)))