From 15c064f76fe5785220efeee198d67c53c5ea07f6 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 21 Dec 2020 13:11:09 -0800 Subject: [PATCH] wgengine/router/dns: remove unsafe endianness detection on Linux --- cmd/tailscale/depaware.txt | 4 ++-- cmd/tailscaled/depaware.txt | 4 ++-- wgengine/router/dns/nm.go | 20 ++------------------ 3 files changed, 6 insertions(+), 22 deletions(-) diff --git a/cmd/tailscale/depaware.txt b/cmd/tailscale/depaware.txt index 1bd1bef11..6542d9e79 100644 --- a/cmd/tailscale/depaware.txt +++ b/cmd/tailscale/depaware.txt @@ -71,7 +71,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep tailscale.com/types/opt from tailscale.com/control/controlclient+ tailscale.com/types/strbuilder from tailscale.com/net/packet tailscale.com/types/structs from tailscale.com/control/controlclient+ - W tailscale.com/util/endian from tailscale.com/net/netns + LW tailscale.com/util/endian from tailscale.com/net/netns+ tailscale.com/util/lineread from tailscale.com/control/controlclient+ tailscale.com/util/systemd from tailscale.com/control/controlclient+ tailscale.com/version from tailscale.com/cmd/tailscale/cli+ @@ -81,7 +81,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep tailscale.com/wgengine/magicsock from tailscale.com/wgengine 💣 tailscale.com/wgengine/monitor from tailscale.com/cmd/tailscale/cli+ tailscale.com/wgengine/router from tailscale.com/cmd/tailscale/cli+ - 💣 tailscale.com/wgengine/router/dns from tailscale.com/ipn+ + tailscale.com/wgengine/router/dns from tailscale.com/ipn+ tailscale.com/wgengine/tsdns from tailscale.com/ipn+ tailscale.com/wgengine/tstun from tailscale.com/wgengine W 💣 tailscale.com/wgengine/winnet from tailscale.com/wgengine/router diff --git a/cmd/tailscaled/depaware.txt b/cmd/tailscaled/depaware.txt index 2e2a56c9a..f3e2ba50b 100644 --- a/cmd/tailscaled/depaware.txt +++ b/cmd/tailscaled/depaware.txt @@ -79,7 +79,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de tailscale.com/types/opt from tailscale.com/control/controlclient+ tailscale.com/types/strbuilder from tailscale.com/net/packet tailscale.com/types/structs from tailscale.com/control/controlclient+ - W tailscale.com/util/endian from tailscale.com/net/netns+ + LW tailscale.com/util/endian from tailscale.com/net/netns+ tailscale.com/util/lineread from tailscale.com/control/controlclient+ tailscale.com/util/pidowner from tailscale.com/ipn/ipnserver tailscale.com/util/racebuild from tailscale.com/logpolicy @@ -91,7 +91,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de tailscale.com/wgengine/magicsock from tailscale.com/cmd/tailscaled+ 💣 tailscale.com/wgengine/monitor from tailscale.com/wgengine tailscale.com/wgengine/router from tailscale.com/cmd/tailscaled+ - 💣 tailscale.com/wgengine/router/dns from tailscale.com/ipn+ + tailscale.com/wgengine/router/dns from tailscale.com/ipn+ tailscale.com/wgengine/tsdns from tailscale.com/ipn+ tailscale.com/wgengine/tstun from tailscale.com/wgengine W 💣 tailscale.com/wgengine/winnet from tailscale.com/wgengine/router diff --git a/wgengine/router/dns/nm.go b/wgengine/router/dns/nm.go index 2f707c233..a597fa60d 100644 --- a/wgengine/router/dns/nm.go +++ b/wgengine/router/dns/nm.go @@ -10,30 +10,14 @@ import ( "bufio" "bytes" "context" - "encoding/binary" "fmt" "os" "os/exec" - "unsafe" "github.com/godbus/dbus/v5" + "tailscale.com/util/endian" ) -var nativeEndian binary.ByteOrder - -func init() { - // TODO(dmytro): use DBus endianness flag when available. - // A more elegant way to do this is by looking at the first byte of a raw DBus message. - // However, that requires a change in godbus, which has slow maintainer response. - i := uint32(1) - p := unsafe.Pointer(&i) - if *(*byte)(p) == 1 { - nativeEndian = binary.LittleEndian - } else { - nativeEndian = binary.BigEndian - } -} - // isNMActive determines if NetworkManager is currently managing system DNS settings. func isNMActive() bool { // This is somewhat tricky because NetworkManager supports a number @@ -145,7 +129,7 @@ func (m nmManager) Up(config Config) error { for _, ip := range config.Nameservers { b := ip.As16() if ip.Is4() { - dnsv4 = append(dnsv4, nativeEndian.Uint32(b[12:])) + dnsv4 = append(dnsv4, endian.Native.Uint32(b[12:])) } else { dnsv6 = append(dnsv6, b[:]) }