diff options
author | 2002-03-19 01:39:04 +0000 | |
---|---|---|
committer | 2002-03-19 01:39:04 +0000 | |
commit | 69c43bf2d24ed81ced45f96fa6cc1a1ec8d7e5bb (patch) | |
tree | a0195760a712f6cb1c8bbfab742da3e44217d99b | |
parent | no need for reg.h in the frame.h (diff) | |
download | wireguard-openbsd-69c43bf2d24ed81ced45f96fa6cc1a1ec8d7e5bb.tar.xz wireguard-openbsd-69c43bf2d24ed81ced45f96fa6cc1a1ec8d7e5bb.zip |
check sa_len/family strictly
-rw-r--r-- | sys/netinet6/raw_ip6.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 2aa0881bbb4..933c0d25cab 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -1,4 +1,4 @@ -/* $OpenBSD: raw_ip6.c,v 1.9 2002/03/15 18:19:53 millert Exp $ */ +/* $OpenBSD: raw_ip6.c,v 1.10 2002/03/19 01:39:04 itojun Exp $ */ /* $KAME: raw_ip6.c,v 1.69 2001/03/04 15:55:44 itojun Exp $ */ /* @@ -771,8 +771,18 @@ rip6_usrreq(so, req, m, nam, control, p) error = ENOTCONN; break; } + if (nam->m_len != sizeof(tmp)) { + error = EINVAL; + break; + } + tmp = *mtod(nam, struct sockaddr_in6 *); dst = &tmp; + + if (dst->sin6_family != AF_INET6) { + error = EAFNOSUPPORT; + break; + } } #ifdef ENABLE_DEFAULT_SCOPE if (dst->sin6_scope_id == 0) { |