From 9ee20fbf7ff5a9bdef0f0f83de8d1dd99765ff1e Mon Sep 17 00:00:00 2001 From: Weixie Cui Date: Wed, 6 May 2026 21:35:39 +0800 Subject: [PATCH] p2p/discover: copy buffer before sending read errors to unhandled --- p2p/discover/v4_udp.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/p2p/discover/v4_udp.go b/p2p/discover/v4_udp.go index b06db4bdb2..9fb5320824 100644 --- a/p2p/discover/v4_udp.go +++ b/p2p/discover/v4_udp.go @@ -555,8 +555,10 @@ func (t *UDPv4) readLoop(unhandled chan<- ReadPacket) { if err := t.handlePacket(from, buf[:nbytes]); err != nil && unhandled == nil { t.log.Debug("Bad discv4 packet", "addr", from, "err", err) } else if err != nil && unhandled != nil { + packet := make([]byte, nbytes) + copy(packet, buf[:nbytes]) select { - case unhandled <- ReadPacket{buf[:nbytes], from}: + case unhandled <- ReadPacket{packet, from}: default: } }