hw/net/virtio-net.c: fix crash in iov_copy()
A crash found while fuzzing device virtio-net-socket-check-used. Assertion "offset == 0" in iov_copy() fails if less than guest_hdr_len bytes were transmited. Signed-off-by: Dmitry Frolov <frolov@swemel.ru> Message-Id: <20240613143529.602591-2-frolov@swemel.ru> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
7c211eb078
commit
d4f471eb7e
@ -2735,6 +2735,10 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q)
|
||||
*/
|
||||
assert(n->host_hdr_len <= n->guest_hdr_len);
|
||||
if (n->host_hdr_len != n->guest_hdr_len) {
|
||||
if (iov_size(out_sg, out_num) < n->guest_hdr_len) {
|
||||
virtio_error(vdev, "virtio-net header is invalid");
|
||||
goto detach;
|
||||
}
|
||||
unsigned sg_num = iov_copy(sg, ARRAY_SIZE(sg),
|
||||
out_sg, out_num,
|
||||
0, n->host_hdr_len);
|
||||
|
Loading…
Reference in New Issue
Block a user