diff --git a/tun/tun_linux.go b/tun/tun_linux.go index 8de679d25..aeb52e0c8 100644 --- a/tun/tun_linux.go +++ b/tun/tun_linux.go @@ -9,6 +9,7 @@ package tun */ import ( + "encoding/binary" "errors" "fmt" "os" @@ -249,7 +250,7 @@ func getIFIndex(name string) (int32, error) { return 0, errno } - return *(*int32)(unsafe.Pointer(&ifr[unix.IFNAMSIZ])), nil + return int32(binary.LittleEndian.Uint32(ifr[unix.IFNAMSIZ : unix.IFNAMSIZ+4])), nil } func (tun *NativeTun) setMTU(n int) error { @@ -314,7 +315,7 @@ func (tun *NativeTun) MTU() (int, error) { return 0, fmt.Errorf("failed to get MTU of TUN device: %w", errno) } - return int(*(*int32)(unsafe.Pointer(&ifr[unix.IFNAMSIZ]))), nil + return int(binary.LittleEndian.Uint32(ifr[unix.IFNAMSIZ : unix.IFNAMSIZ+4])), nil } func (tun *NativeTun) Name() (string, error) {