Skip to content

Commit 227199c

Browse files
committed
SPDM - enhance the payload size check upon receiving
Enhance the payload size check in SPDM receive function to prevent buffer overflow and interger overflow.
1 parent b212d2b commit 227199c

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/migtd/src/spdm/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ impl<T: AsyncRead + AsyncWrite + Unpin> SpdmDeviceIo for MigtdTransport<T> {
6262
buffer: Arc<Mutex<&mut [u8]>>,
6363
_timeout: usize,
6464
) -> Result<usize, usize> {
65+
if buffer.lock().len() < VMCALL_SPDM_MESSAGE_HEADER_SIZE {
66+
return Err(0_usize);
67+
}
68+
6569
let mut buffer = buffer.lock();
6670
let mut recvd = 0;
6771
while recvd < VMCALL_SPDM_MESSAGE_HEADER_SIZE {
@@ -78,7 +82,7 @@ impl<T: AsyncRead + AsyncWrite + Unpin> SpdmDeviceIo for MigtdTransport<T> {
7882
vmcall_msg::VmCallMessageHeader::read(&mut reader).ok_or(0_usize)?;
7983
let payload_size = vmcall_msg_header.length as usize;
8084

81-
if buffer.len() < payload_size + VMCALL_SPDM_MESSAGE_HEADER_SIZE {
85+
if payload_size > buffer.len() - VMCALL_SPDM_MESSAGE_HEADER_SIZE {
8286
return Err(0_usize);
8387
}
8488

0 commit comments

Comments
 (0)