Bug fix from audit.

This commit is contained in:
jdl
2026-06-15 20:55:57 +02:00
parent fe9f15bec9
commit b479b37479

View File

@@ -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]))
}