aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhenlei Huang <zlei.huang@gmail.com>2022-09-30 07:55:29 +0000
committerKristof Provost <kp@FreeBSD.org>2022-11-04 12:21:45 +0000
commita9c3d5de9ac8ae8090881f20c894d3577d97e92a (patch)
tree42500767a29e240afd0e8dee37813820944943a4
parent3cef626d8e1bd844fd0822aa11989c20e37949a0 (diff)
downloadsrc-a9c3d5de9ac8ae8090881f20c894d3577d97e92a.tar.gz
src-a9c3d5de9ac8ae8090881f20c894d3577d97e92a.zip
if_vxlan(4): Check the size of data available in mbuf before using them
PR: 261711 Reviewed by: kp Tested by: Alfa (burak.sn at outlook.com) Approved by: re (gjb), kp (mentor) Differential Revision: https://reviews.freebsd.org/D36794 (cherry picked from commit 8707cb19e68128c181477d87f960182c14e15f12) (cherry picked from commit 639aebb2aa0b72c569f8779e13351d37f7bb17c6)
-rw-r--r--sys/net/if_vxlan.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/net/if_vxlan.c b/sys/net/if_vxlan.c
index 17f96727ca12..67aa760f7fcf 100644
--- a/sys/net/if_vxlan.c
+++ b/sys/net/if_vxlan.c
@@ -2560,6 +2560,12 @@ vxlan_input(struct vxlan_socket *vso, uint32_t vni, struct mbuf **m0,
ifp = sc->vxl_ifp;
m = *m0;
+ if (m->m_len < ETHER_HDR_LEN &&
+ (m = m_pullup(m, ETHER_HDR_LEN)) == NULL) {
+ *m0 = NULL;
+ error = ENOBUFS;
+ goto out;
+ }
eh = mtod(m, struct ether_header *);
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {