Skip to content

Commit

Permalink
net: fix WriteMsgUDPAddrPort addr handling
Browse files Browse the repository at this point in the history
WriteMsgUDPAddrPort should accept IPv4 target addresses on IPv6 UDP sockets. An IPv4 target address will be converted to an IPv4-mapped IPv6 address. Fixes golang#52264.
  • Loading branch information
database64128 authored Apr 10, 2022
1 parent db7183c commit f839c23
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/net/ipsock_posix.go
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,11 @@ func addrPortToSockaddrInet4(ap netip.AddrPort) (syscall.SockaddrInet4, error) {
func addrPortToSockaddrInet6(ap netip.AddrPort) (syscall.SockaddrInet6, error) {
// ipToSockaddrInet6 has special handling here for zero length slices.
// We do not, because netip has no concept of a generic zero IP address.
//
// addr is allowed to be an IPv4 address, because As16 will convert it
// to an IPv4-mapped IPv6 address.
addr := ap.Addr()
if !addr.Is6() {
if !addr.Is6() && !addr.Is4() {
return syscall.SockaddrInet6{}, &AddrError{Err: "non-IPv6 address", Addr: addr.String()}
}
sa := syscall.SockaddrInet6{
Expand Down

0 comments on commit f839c23

Please sign in to comment.