Skip to content

Commit 414908d

Browse files
committed
Prevent out-of-bound buffer access.
1 parent 98bb122 commit 414908d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/spi/SpiDispatcher.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -143,20 +143,21 @@ void SpiDispatcher::processSpiIoRequest(SpiIoTransaction * spi_io_transaction)
143143
size_t bytes_received = 0,
144144
bytes_sent = 0;
145145
for(;
146-
bytes_received < io_request->bytes_to_read;
146+
bytes_received < std::max(io_request->bytes_to_read, io_request->bytes_to_write);
147147
bytes_received++, bytes_sent++)
148148
{
149149
byte tx_byte = 0;
150150

151-
if (bytes_sent < io_request->bytes_to_write)
151+
if (io_request->write_buf && (bytes_sent < io_request->bytes_to_write))
152152
tx_byte = io_request->write_buf[bytes_sent];
153153
else
154154
tx_byte = config->fill_symbol();
155155

156156
byte const rx_byte = config->spi().transfer(tx_byte);
157157

158-
io_request->read_buf[bytes_received] = rx_byte;
159-
}
158+
if (io_request->read_buf && (bytes_received < io_request->bytes_to_read))
159+
io_request->read_buf[bytes_received] = rx_byte;
160+
}
160161
config->spi().endTransaction();
161162

162163
config->deselect();

0 commit comments

Comments
 (0)