diff options
author | Russ Cox <rsc@golang.org> | 2014-10-28 11:35:00 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-10-28 11:35:00 -0400 |
commit | 96e9e81b5f353636965fa6ba5e014c2bab13fadc (patch) | |
tree | 140a2f572df4bd79634b0c13fe9b9c45fda6b4d5 | |
parent | ea295a4cfbb0641f58c41d3722e7e8fb3b3f493f (diff) | |
download | go-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.go | 2 |
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])) |