Fix accidental truncation of address on macOS and BSD

This commit is contained in:
Neil Alexander 2018-05-26 21:38:29 +01:00
parent 12cba9dac9
commit 21c39e2c81
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
2 changed files with 2 additions and 2 deletions

View file

@ -137,7 +137,7 @@ func (tun *tunDevice) setupAddress(addr string) error {
copy(ar.ifr_name[:], tun.iface.Name()) copy(ar.ifr_name[:], tun.iface.Name())
ar.ifru_addr.sin6_len = uint8(unsafe.Sizeof(ar.ifru_addr)) ar.ifru_addr.sin6_len = uint8(unsafe.Sizeof(ar.ifru_addr))
ar.ifru_addr.sin6_family = unix.AF_INET6 ar.ifru_addr.sin6_family = unix.AF_INET6
parts := strings.Split(strings.TrimRight(addr, "/8"), ":") parts := strings.Split(strings.Split(addr, "/")[0], ":")
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
addr, _ := strconv.ParseUint(parts[i], 16, 16) addr, _ := strconv.ParseUint(parts[i], 16, 16)
b := make([]byte, 16) b := make([]byte, 16)

View file

@ -84,7 +84,7 @@ func (tun *tunDevice) setupAddress(addr string) error {
ar.ifra_addr.sin6_len = uint8(unsafe.Sizeof(ar.ifra_addr)) ar.ifra_addr.sin6_len = uint8(unsafe.Sizeof(ar.ifra_addr))
ar.ifra_addr.sin6_family = unix.AF_INET6 ar.ifra_addr.sin6_family = unix.AF_INET6
parts := strings.Split(strings.TrimRight(addr, "/8"), ":") parts := strings.Split(strings.Split(addr, "/")[0], ":")
for i := 0; i < 8; i++ { for i := 0; i < 8; i++ {
addr, _ := strconv.ParseUint(parts[i], 16, 16) addr, _ := strconv.ParseUint(parts[i], 16, 16)
b := make([]byte, 16) b := make([]byte, 16)