[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 25/28] hw/net/net_tx_pkt: Check the payload length
From: |
Akihiko Odaki |
Subject: |
[PATCH v4 25/28] hw/net/net_tx_pkt: Check the payload length |
Date: |
Mon, 30 Jan 2023 22:47:12 +0900 |
Check the payload length if checksumming to ensure the payload contains
the space for the resulting value.
This bug was found by Alexander Bulekov with the fuzzer:
https://patchew.org/QEMU/20230129053316.1071513-1-alxndr@bu.edu/
The fixed test case is:
fuzz/crash_6aeaa33e7211ecd603726c53e834df4c6d1e08bc
Fixes: e263cd49c7 ("Packet abstraction for VMWARE network devices")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
hw/net/net_tx_pkt.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/net/net_tx_pkt.c b/hw/net/net_tx_pkt.c
index 4a35e8429d..986a3adfe9 100644
--- a/hw/net/net_tx_pkt.c
+++ b/hw/net/net_tx_pkt.c
@@ -342,11 +342,17 @@ bool net_tx_pkt_build_vheader(struct NetTxPkt *pkt, bool
tso_enable,
if (csum_enable) {
switch (pkt->l4proto) {
case IP_PROTO_TCP:
+ if (pkt->payload_len < sizeof(struct tcp_hdr)) {
+ return false;
+ }
pkt->virt_hdr.flags = VIRTIO_NET_HDR_F_NEEDS_CSUM;
pkt->virt_hdr.csum_start = pkt->hdr_len;
pkt->virt_hdr.csum_offset = offsetof(struct tcp_hdr, th_sum);
break;
case IP_PROTO_UDP:
+ if (pkt->payload_len < sizeof(struct udp_hdr)) {
+ return false;
+ }
pkt->virt_hdr.flags = VIRTIO_NET_HDR_F_NEEDS_CSUM;
pkt->virt_hdr.csum_start = pkt->hdr_len;
pkt->virt_hdr.csum_offset = offsetof(struct udp_hdr, uh_sum);
--
2.39.1
- [PATCH v4 20/28] net: Strip virtio-net header when dumping, (continued)
[PATCH v4 24/28] hw/net/net_tx_pkt: Implement TCP segmentation, Akihiko Odaki, 2023/01/30
[PATCH v4 23/28] e1000e: Perform software segmentation for loopback, Akihiko Odaki, 2023/01/30
[PATCH v4 21/28] hw/net/net_tx_pkt: Automatically determine if virtio-net header is used, Akihiko Odaki, 2023/01/30
[PATCH v4 26/28] e1000e: Do not assert when MSI-X is disabled later, Akihiko Odaki, 2023/01/30
[PATCH v4 22/28] hw/net/net_rx_pkt: Remove net_rx_pkt_has_virt_hdr, Akihiko Odaki, 2023/01/30
[PATCH v4 25/28] hw/net/net_tx_pkt: Check the payload length,
Akihiko Odaki <=
[PATCH v4 27/28] MAINTAINERS: Add Akihiko Odaki as a e1000e reviewer, Akihiko Odaki, 2023/01/30
[PATCH v4 28/28] MAINTAINERS: Add e1000e test files, Akihiko Odaki, 2023/01/30