Quellcode durchsuchen

Copy the RemoteAddr().IP bytes before using them

I was getting timeouts from the tests before doing this; maybe miekg/dns or
something else is reusing a buffer here that I muck too much with
when setting the EDNS data?
Ask Bjørn Hansen vor 10 Jahren
Ursprung
Commit
4cee578da2
1 geänderte Dateien mit 4 neuen und 2 gelöschten Zeilen
  1. 4 2
      serve.go

+ 4 - 2
serve.go

@@ -43,9 +43,11 @@ func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone) {
 	var realIP net.IP
 
 	if addr, ok := w.RemoteAddr().(*net.UDPAddr); ok {
-		realIP = addr.IP
+		realIP = make(net.IP, len(addr.IP))
+		copy(realIP, addr.IP)
 	} else if addr, ok := w.RemoteAddr().(*net.TCPAddr); ok {
-		realIP = addr.IP
+		realIP = make(net.IP, len(addr.IP))
+		copy(realIP, addr.IP)
 	}
 
 	z.Metrics.ClientStats.Add(realIP.String())