mirror of https://github.com/xemu-project/xemu.git
hw/cxl: Check enough data in cmd_firmware_update_transfer()
Buggy guest can write a message that advertises more data that is provided. As QEMU internally duplicates the reported message size, this may result in an out of bounds access. Add sanity checks on the size to avoid this. Reported-by: Esifiel <esifiel@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20241101133917.27634-5-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
f4a12ba66b
commit
a3995360ae
|
@ -705,6 +705,10 @@ static CXLRetCode cmd_firmware_update_transfer(const struct cxl_cmd *cmd,
|
|||
} QEMU_PACKED *fw_transfer = (void *)payload_in;
|
||||
size_t offset, length;
|
||||
|
||||
if (len < sizeof(*fw_transfer)) {
|
||||
return CXL_MBOX_INVALID_PAYLOAD_LENGTH;
|
||||
}
|
||||
|
||||
if (fw_transfer->action == CXL_FW_XFER_ACTION_ABORT) {
|
||||
/*
|
||||
* At this point there aren't any on-going transfers
|
||||
|
|
Loading…
Reference in New Issue