DragonFlyBSD Kernel Audit
DF-0387 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netgraph/ppp/ng_ppp.c b/sys/netgraph/ppp/ng_ppp.c
--- a/sys/netgraph/ppp/ng_ppp.c
+++ b/sys/netgraph/ppp/ng_ppp.c
@@ -1388,6 +1388,19 @@
 			else if (qent->seq != seq)
 				beg = NULL;
 			if (beg != NULL && qent->last) {
+				if (priv->conf.mrru > 0) {
+					int total = 0;
+					struct ng_ppp_frag *fq;
+					TAILQ_FOREACH(fq, &priv->frags, f_qent) {
+						total += fq->data->m_pkthdr.len;
+						if (fq == qent)
+							break;
+					}
+					if (total > priv->conf.mrru) {
+						ng_ppp_frag_checkstale(node);
+						break;
+					}
+				}
 				end = qent;
 				break;
 			}