From b479b37479361075ecdc20cf125a6bf2e7389354 Mon Sep 17 00:00:00 2001 From: jdl Date: Mon, 15 Jun 2026 20:55:57 +0200 Subject: [PATCH] Bug fix from audit. --- peer/control/ping.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/peer/control/ping.go b/peer/control/ping.go index 411cb74..68f9957 100644 --- a/peer/control/ping.go +++ b/peer/control/ping.go @@ -41,6 +41,8 @@ func (p Ping) Marshal(buf []byte) []byte { buf[0] = version binary.BigEndian.PutUint64(buf[1:9], uint64(p.PingTS)) + + // SrcV4. if p.SrcV4.IsValid() { a4 := p.SrcV4.Addr().As4() copy(buf[9:13], a4[:]) @@ -48,9 +50,13 @@ func (p Ping) Marshal(buf []byte) []byte { } else { clear(buf[9:15]) } + + // SrcV6. a16 := p.SrcV6.Addr().As16() copy(buf[15:31], a16[:]) binary.BigEndian.PutUint16(buf[31:33], p.SrcV6.Port()) + + // Dst. a16 = p.Dst.Addr().As16() copy(buf[33:49], a16[:]) binary.BigEndian.PutUint16(buf[49:51], p.Dst.Port()) @@ -72,7 +78,7 @@ func Unmarshal(buf [Size]byte) (Ping, error) { } addr = netip.AddrFrom16([16]byte(buf[15:31])).Unmap() - if addr.IsUnspecified() && addr.Is6() { + if !addr.IsUnspecified() && addr.Is6() { p.SrcV6 = netip.AddrPortFrom(addr, binary.BigEndian.Uint16(buf[31:33])) }