aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/route6d/route6d.c
diff options
context:
space:
mode:
authorSUZUKI Shinsuke <suz@FreeBSD.org>2003-10-31 03:18:45 +0000
committerSUZUKI Shinsuke <suz@FreeBSD.org>2003-10-31 03:18:45 +0000
commit7a1413f9725c454066ea7865cf097431e4338c5d (patch)
treef6487ca5acd7bdb47305f68f28000453c99ad9b5 /usr.sbin/route6d/route6d.c
parentaaaad65dcda716a5f7d0c883b9b7f36dccb4de98 (diff)
downloadsrc-7a1413f9725c454066ea7865cf097431e4338c5d.tar.gz
src-7a1413f9725c454066ea7865cf097431e4338c5d.zip
fixe remote panic on short packet
Obtained from: KAME
Notes
Notes: svn path=/head/; revision=121779
Diffstat (limited to 'usr.sbin/route6d/route6d.c')
-rw-r--r--usr.sbin/route6d/route6d.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/usr.sbin/route6d/route6d.c b/usr.sbin/route6d/route6d.c
index 062291816a3d..b19b799528ba 100644
--- a/usr.sbin/route6d/route6d.c
+++ b/usr.sbin/route6d/route6d.c
@@ -1126,6 +1126,11 @@ riprecv()
if (idx && IN6_IS_ADDR_LINKLOCAL(&fsock.sin6_addr))
SET_IN6_LINKLOCAL_IFINDEX(fsock.sin6_addr, idx);
+ if (len < sizeof(struct rip6)) {
+ trace(1, "Packet too short\n");
+ return;
+ }
+
nh = fsock.sin6_addr;
nn = (len - sizeof(struct rip6) + sizeof(struct netinfo6)) /
sizeof(struct netinfo6);