[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL V2 26/44] hw/net/net_tx_pkt: Check the payload length
From: |
Jason Wang |
Subject: |
[PULL V2 26/44] hw/net/net_tx_pkt: Check the payload length |
Date: |
Fri, 10 Mar 2023 17:35:08 +0800 |
From: Akihiko Odaki <akihiko.odaki@daynix.com>
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>
Signed-off-by: Jason Wang <jasowang@redhat.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 4a35e84..986a3ad 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.7.4
- [PULL V2 17/44] e1000e: Set MII_ANER_NWAY, (continued)
- [PULL V2 17/44] e1000e: Set MII_ANER_NWAY, Jason Wang, 2023/03/10
- [PULL V2 16/44] e1000e: Introduce e1000_rx_desc_union, Jason Wang, 2023/03/10
- [PULL V2 18/44] e1000e: Remove extra pointer indirection, Jason Wang, 2023/03/10
- [PULL V2 20/44] e1000x: Alter the signature of e1000x_is_vlan_packet, Jason Wang, 2023/03/10
- [PULL V2 19/44] net: Check L4 header size, Jason Wang, 2023/03/10
- [PULL V2 21/44] net: Strip virtio-net header when dumping, Jason Wang, 2023/03/10
- [PULL V2 22/44] hw/net/net_tx_pkt: Automatically determine if virtio-net header is used, Jason Wang, 2023/03/10
- [PULL V2 23/44] hw/net/net_rx_pkt: Remove net_rx_pkt_has_virt_hdr, Jason Wang, 2023/03/10
- [PULL V2 24/44] e1000e: Perform software segmentation for loopback, Jason Wang, 2023/03/10
- [PULL V2 25/44] hw/net/net_tx_pkt: Implement TCP segmentation, Jason Wang, 2023/03/10
- [PULL V2 26/44] hw/net/net_tx_pkt: Check the payload length,
Jason Wang <=
- [PULL V2 27/44] e1000e: Do not assert when MSI-X is disabled later, Jason Wang, 2023/03/10
- [PULL V2 28/44] MAINTAINERS: Add Akihiko Odaki as a e1000e reviewer, Jason Wang, 2023/03/10
- [PULL V2 30/44] e1000e: Combine rx traces, Jason Wang, 2023/03/10
- [PULL V2 29/44] MAINTAINERS: Add e1000e test files, Jason Wang, 2023/03/10
- [PULL V2 31/44] e1000: Count CRC in Tx statistics, Jason Wang, 2023/03/10
- [PULL V2 34/44] e1000e: Implement system clock, Jason Wang, 2023/03/10
- [PULL V2 33/44] net/eth: Report if headers are actually present, Jason Wang, 2023/03/10
- [PULL V2 32/44] e1000e: Count CRC in Tx statistics, Jason Wang, 2023/03/10
- [PULL V2 35/44] net/eth: Introduce EthL4HdrProto, Jason Wang, 2023/03/10
- [PULL V2 36/44] pcie: Introduce pcie_sriov_num_vfs, Jason Wang, 2023/03/10