From 95f3dd13461c9597dd9308eb2b57b8187d786de5 Mon Sep 17 00:00:00 2001 From: Andrew Dunham Date: Tue, 25 Oct 2022 19:23:36 -0400 Subject: [PATCH] net/interfaces: don't dereference null pointer if no destination/netmask Fixes #6065 Signed-off-by: Andrew Dunham Change-Id: I7159b8cbb8d5f47c0668cf83e59167f182f1defd --- net/interfaces/interfaces_bsd.go | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/net/interfaces/interfaces_bsd.go b/net/interfaces/interfaces_bsd.go index 6330b7e3d..4a5af8bc2 100644 --- a/net/interfaces/interfaces_bsd.go +++ b/net/interfaces/interfaces_bsd.go @@ -126,19 +126,24 @@ func isDefaultGateway(rm *route.RouteMessage) bool { dst := rm.Addrs[unix.RTAX_DST] netmask := rm.Addrs[unix.RTAX_NETMASK] + if dst == nil || netmask == nil { + return false + } - if dst.Family() == syscall.AF_INET && - netmask.Family() == syscall.AF_INET && - dst.(*route.Inet4Addr).IP == v4default && - netmask.(*route.Inet4Addr).IP == v4default { - return true + if dst.Family() == syscall.AF_INET && netmask.Family() == syscall.AF_INET { + dstAddr, dstOk := dst.(*route.Inet4Addr) + nmAddr, nmOk := netmask.(*route.Inet4Addr) + if dstOk && nmOk && dstAddr.IP == v4default && nmAddr.IP == v4default { + return true + } } - if dst.Family() == syscall.AF_INET6 && - netmask.Family() == syscall.AF_INET6 && - dst.(*route.Inet6Addr).IP == v6default && - netmask.(*route.Inet6Addr).IP == v6default { - return true + if dst.Family() == syscall.AF_INET6 && netmask.Family() == syscall.AF_INET6 { + dstAddr, dstOk := dst.(*route.Inet6Addr) + nmAddr, nmOk := netmask.(*route.Inet6Addr) + if dstOk && nmOk && dstAddr.IP == v6default && nmAddr.IP == v6default { + return true + } } return false