git: 639aebb2aa0b - stable/12 - if_vxlan(4): Check the size of data available in mbuf before using them
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 04 Nov 2022 11:00:26 UTC
The branch stable/12 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=639aebb2aa0b72c569f8779e13351d37f7bb17c6 commit 639aebb2aa0b72c569f8779e13351d37f7bb17c6 Author: Zhenlei Huang <zlei.huang@gmail.com> AuthorDate: 2022-09-30 07:55:29 +0000 Commit: Zhenlei Huang <zlei@FreeBSD.org> CommitDate: 2022-11-04 10:57:23 +0000 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: kp (mentor) Differential Revision: https://reviews.freebsd.org/D36794 (cherry picked from commit 8707cb19e68128c181477d87f960182c14e15f12) --- sys/net/if_vxlan.c | 6 ++++++ 1 file changed, 6 insertions(+) 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) {