diff options
author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2001-07-04 11:29:55 +0000 |
---|---|---|
committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2001-07-04 11:29:55 +0000 |
commit | 033110569e60a64364d1392d2909a799e6b6bc5c (patch) | |
tree | 28671837f1738a267e6a55bcd7ad7918e427fdf5 /sys/net | |
parent | 554bf4aa8609fa403a3e7aee1b0875d0e2a3740a (diff) | |
download | src-033110569e60a64364d1392d2909a799e6b6bc5c.tar.gz src-033110569e60a64364d1392d2909a799e6b6bc5c.zip |
adjust mbuf length right in route_output().
Obtained from: KAME
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=79198
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/rtsock.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 6588f564dd86..67c79b6c3407 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -483,13 +483,19 @@ flush: } if (rtm) { m_copyback(m, 0, rtm->rtm_msglen, (caddr_t)rtm); + if (m->m_pkthdr.len < rtm->rtm_msglen) { + m_freem(m); + m = NULL; + } else if (m->m_pkthdr.len > rtm->rtm_msglen) + m_adj(m, rtm->rtm_msglen - m->m_pkthdr.len); Free(rtm); } if (rp) rp->rcb_proto.sp_family = 0; /* Avoid us */ if (dst) route_proto.sp_protocol = dst->sa_family; - raw_input(m, &route_proto, &route_src, &route_dst); + if (m) + raw_input(m, &route_proto, &route_src, &route_dst); if (rp) rp->rcb_proto.sp_family = PF_ROUTE; } |