-
Notifications
You must be signed in to change notification settings - Fork 167
Open
Description
Version: 08c8ed9
ISO File: https://github.com/reactos/reactos/actions/runs/19678484187/artifacts/4676568686 (livecd.iso)
When the host sends a 0x46 CDB command, which has allocation length of 8, bochs incorrectly returns more than 8 bytes of data, resulting in a host buffer overrun.
Send packet command
IO 000001F6 <-- a0
IO 000001F7 --> 50
IO 000001F4 <-- 08
IO 000001F5 <-- 00
IO 000001F1 <-- 00
IO 000001F7 <-- a0
Wait for ready for CDB
IO 000001F7 --> 58
IO 000001F2 --> 01 (IR = 09, phase = accept CDB)
Send CDB 46 (data read)
IO 000001F0 <-- 00000046 Cdb[0] I/O 32
IO 000001F0 <-- 00000000 Cdb[1] I/O 32
IO 000001F0 <-- 00000008 Cdb[2] I/O 32 (allocation length = 8)
Interrupt
IO 0000C002 --> 04
IO 0000C002 <-- 04 (clear BM DMA)
IO 000001F7 --> 58
IO 000001F2 --> 02 (IR = 0A, phase = data read)
IO 000001F4 --> 08
IO 000001F5 --> 00 (data size = 8 bytes)
Read data (8 bytes)
IO 000001F0 --> 48000000 Cdb[0] I/O 32
IO 000001F0 --> 08000000 Cdb[1] I/O 32
Interrupt
IO 0000C002 --> 04
IO 0000C002 <-- 04 (clear BM DMA)
Incorrect phase transition goes here:
- IO 000001F7 --> 58
- IO 000001F2 --> 02 (IR = 0A, phase = data read)
- IO 000001F4 --> 08
- IO 000001F5 --> 00 (data size = 8 bytes)
Expected behavior:
+ IO 000001F7 --> 50
+ IO 000001F2 --> 03 (IR = 03, phase = status)Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels