From c718f3940d6546f83cc14c4f121d52470a705c31 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 17 May 2019 15:35:20 +0200 Subject: [PATCH] device: fail to give bind if it doesn't exist --- device/boundif_android.go | 14 ++++++++++++-- device/device.go | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/device/boundif_android.go b/device/boundif_android.go index ecc9331..6d0fecf 100644 --- a/device/boundif_android.go +++ b/device/boundif_android.go @@ -5,8 +5,14 @@ package device +import "errors" + func (device *Device) PeekLookAtSocketFd4() (fd int, err error) { - sysconn, err := device.net.bind.(*nativeBind).ipv4.SyscallConn() + nb, ok := device.net.bind.(*nativeBind) + if !ok { + return 0, errors.New("no socket exists") + } + sysconn, err := nb.ipv4.SyscallConn() if err != nil { return } @@ -20,7 +26,11 @@ func (device *Device) PeekLookAtSocketFd4() (fd int, err error) { } func (device *Device) PeekLookAtSocketFd6() (fd int, err error) { - sysconn, err := device.net.bind.(*nativeBind).ipv6.SyscallConn() + nb, ok := device.net.bind.(*nativeBind) + if !ok { + return 0, errors.New("no socket exists") + } + sysconn, err := nb.ipv6.SyscallConn() if err != nil { return } diff --git a/device/device.go b/device/device.go index ef269f5..fa7ed88 100644 --- a/device/device.go +++ b/device/device.go @@ -133,6 +133,7 @@ func deviceUpdateState(device *Device) { switch newIsUp { case true: if err := device.BindUpdate(); err != nil { + device.log.Error.Printf("Unable to update bind: %v\n", err) device.isUp.Set(false) break }