git: 9b3cf23b7d11 - stable/11 - bhyve: validate e82545 checksum offset field
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 06 Apr 2022 14:20:11 UTC
The branch stable/11 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=9b3cf23b7d11b3688bb564adf937ec4e0530ba0e commit 9b3cf23b7d11b3688bb564adf937ec4e0530ba0e Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2022-04-05 22:52:18 +0000 Commit: Ed Maste <emaste@FreeBSD.org> CommitDate: 2022-04-06 14:19:27 +0000 bhyve: validate e82545 checksum offset field Reported by: Mehdi Talbi, Synacktiv (cherry picked from commit b0aa20bec5db244980a0248e24dd6b8e1e68c4d0) (cherry picked from commit 53f72209479885dfa6a7e6ed68cbc82c68464f4b) (cherry picked from commit 629df7c108abe26496c3a5c196cce79a47bc1f21) --- usr.sbin/bhyve/pci_e82545.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/usr.sbin/bhyve/pci_e82545.c b/usr.sbin/bhyve/pci_e82545.c index 988b3810368a..0824327df9c6 100644 --- a/usr.sbin/bhyve/pci_e82545.c +++ b/usr.sbin/bhyve/pci_e82545.c @@ -1273,9 +1273,7 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head, uint16_t tail, goto done; } if (sc->esc_txctx.cmd_and_length & E1000_TXD_CMD_TCP) { - if (hdrlen < ckinfo[1].ck_start + 14 || - (ckinfo[1].ck_valid && - hdrlen < ckinfo[1].ck_off + 2)) { + if (hdrlen < ckinfo[1].ck_start + 14) { WPRINTF("TSO hdrlen too small for TCP fields " "(%d) -- dropped\r\n", hdrlen); goto done; @@ -1287,6 +1285,11 @@ e82545_transmit(struct e82545_softc *sc, uint16_t head, uint16_t tail, goto done; } } + if (ckinfo[1].ck_valid && hdrlen < ckinfo[1].ck_off + 2) { + WPRINTF("TSO hdrlen too small for TCP/UDP fields " + "(%d) -- dropped\r\n", hdrlen); + goto done; + } } /* Allocate, fill and prepend writable header vector. */