MFC r290116:

Check the size of data available in mbuf before using it.

  PR:		202667
This commit is contained in:
ae 2015-11-04 10:42:51 +00:00
parent 3fe8aea7a4
commit 375651c350

View File

@ -691,6 +691,14 @@ gre_input(struct mbuf **mp, int *offp, int proto)
KASSERT(sc != NULL, ("encap_getarg returned NULL"));
ifp = GRE2IFP(sc);
hlen = *offp + sizeof(struct grehdr) + 4 * sizeof(uint32_t);
if (m->m_pkthdr.len < hlen)
goto drop;
if (m->m_len < hlen) {
m = m_pullup(m, hlen);
if (m == NULL)
goto drop;
}
gh = (struct grehdr *)mtodo(m, *offp);
flags = ntohs(gh->gre_flags);
if (flags & ~GRE_FLAGS_MASK)