hw/cxl: Check input length is large enough in cmd_events_clear_records()
Buggy software might write a message that is too short for either the header, or the header + the event data that is specified in the header. This may result in accesses beyond the range of the message allocated as a duplicate of the incoming message buffer. Reported-by: Esifiel <esifiel@gmail.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20241101133917.27634-4-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
91a743bd02
commit
f4a12ba66b
@ -266,6 +266,12 @@ static CXLRetCode cmd_events_clear_records(const struct cxl_cmd *cmd,
|
||||
CXLClearEventPayload *pl;
|
||||
|
||||
pl = (CXLClearEventPayload *)payload_in;
|
||||
|
||||
if (len_in < sizeof(*pl) ||
|
||||
len_in < sizeof(*pl) + sizeof(*pl->handle) * pl->nr_recs) {
|
||||
return CXL_MBOX_INVALID_PAYLOAD_LENGTH;
|
||||
}
|
||||
|
||||
*len_out = 0;
|
||||
return cxl_event_clear_records(cxlds, pl);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user