From d6e5efd40a019c18bb78ef1ed7b5ffad5d32e990 Mon Sep 17 00:00:00 2001 From: Scott Feldman Date: Tue, 5 Dec 2023 18:47:08 -0800 Subject: [PATCH] fix 'panic: runtime error: slice smaller than array' bug --- tcpsock.go | 6 ++++-- udpsock.go | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tcpsock.go b/tcpsock.go index c88c268..cb2963b 100644 --- a/tcpsock.go +++ b/tcpsock.go @@ -161,7 +161,8 @@ func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error) { return nil, err } - raddrport := netip.AddrPortFrom(netip.AddrFrom4([4]byte(raddr.IP)), uint16(raddr.Port)) + rip, _ := netip.AddrFromSlice(raddr.IP) + raddrport := netip.AddrPortFrom(rip, uint16(raddr.Port)) if err = netdev.Connect(fd, "", raddrport); err != nil { netdev.Close(fd) return nil, err @@ -274,7 +275,8 @@ func listenTCP(laddr *TCPAddr) (Listener, error) { return nil, err } - laddrport := netip.AddrPortFrom(netip.AddrFrom4([4]byte(laddr.IP)), uint16(laddr.Port)) + lip, _ := netip.AddrFromSlice(laddr.IP) + laddrport := netip.AddrPortFrom(lip, uint16(laddr.Port)) err = netdev.Bind(fd, laddrport) if err != nil { return nil, err diff --git a/udpsock.go b/udpsock.go index a4e72ef..271a68d 100644 --- a/udpsock.go +++ b/udpsock.go @@ -172,7 +172,8 @@ func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error) { if err != nil { return nil, err } - laddrport := netip.AddrPortFrom(netip.AddrFrom4([4]byte(laddr.IP)), uint16(laddr.Port)) + lip, _ := netip.AddrFromSlice(laddr.IP) + laddrport := netip.AddrPortFrom(lip, uint16(laddr.Port)) // Local bind err = netdev.Bind(fd, laddrport) @@ -181,7 +182,8 @@ func DialUDP(network string, laddr, raddr *UDPAddr) (*UDPConn, error) { return nil, err } - raddrport := netip.AddrPortFrom(netip.AddrFrom4([4]byte(raddr.IP)), uint16(raddr.Port)) + rip, _ := netip.AddrFromSlice(raddr.IP) + raddrport := netip.AddrPortFrom(rip, uint16(raddr.Port)) // Remote connect if err = netdev.Connect(fd, "", raddrport); err != nil { netdev.Close(fd)