aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-10-28 11:35:00 -0400
committerRuss Cox <rsc@golang.org>2014-10-28 11:35:00 -0400
commit96e9e81b5f353636965fa6ba5e014c2bab13fadc (patch)
tree140a2f572df4bd79634b0c13fe9b9c45fda6b4d5
parentea295a4cfbb0641f58c41d3722e7e8fb3b3f493f (diff)
downloadgo-96e9e81b5f353636965fa6ba5e014c2bab13fadc.tar.gz
go-96e9e81b5f353636965fa6ba5e014c2bab13fadc.zip
syscall: fix ParseRoutingSockaddr with unexpected submessages
No easy way to test (would have to actually trigger some routing events from kernel) but the code is clearly wrong as written. If the header says there is a submessage, we need to at least skip over its bytes, not just continue to the next iteration. Fixes #8203. LGTM=r R=r CC=golang-codereviews, mikioh.mikioh, p https://golang.org/cl/164140044
-rw-r--r--src/syscall/route_bsd.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/syscall/route_bsd.go b/src/syscall/route_bsd.go
index 48af587450..1dabe42531 100644
--- a/src/syscall/route_bsd.go
+++ b/src/syscall/route_bsd.go
@@ -153,7 +153,7 @@ func (m *InterfaceAddrMessage) sockaddr() (sas []Sockaddr) {
// RTAX_NETMASK socket address on the FreeBSD kernel.
preferredFamily := uint8(AF_UNSPEC)
for i := uint(0); i < RTAX_MAX; i++ {
- if m.Header.Addrs&rtaIfaMask&(1<<i) == 0 {
+ if m.Header.Addrs&(1<<i) == 0 {
continue
}
rsa := (*RawSockaddr)(unsafe.Pointer(&b[0]))