aboutsummaryrefslogtreecommitdiff
path: root/lib/libgcc_eh
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2023-06-29 18:27:12 +0000
committerMark Johnston <markj@FreeBSD.org>2023-08-01 19:48:53 +0000
commit9fe302d78109b12867bd933bb68cd900c9940b7d (patch)
tree97429b9d7e611706ab34b60c7f8b2438f3268379 /lib/libgcc_eh
parentbc50720b321667c71d77d3f0c692a59c77f955da (diff)
bhyve: Fully reset the fwctl state machine if the guest requests a reset.
If a guest tries to reset the fwctl device while a pending request was in flight, the fwctl state machine can be left in an incomplete state. Specifically, rinfo is not cleared. Normally the state machine for fwctl alternates between REQ (receiving request) and RESP (sending response) and ignores port writes while in RESP or port reads while in REQ. Once a guest completes the writes to the port to send a request, the state machine transitions to RESP and ignores future writes. However, if a guest writes a full request and then resets the fwctl device, the state would transition to REQ without draining the pending response or discarding the received request. Instead, additional port writes after the reset were treated as new payload bytes, but were appended to the previously-received request and could overflow the fget_str buffer. To fix, fully reset the fwctl state machine if the guest requests a reset. admbugs: 998 Approved by: so Reviewed by: markj Reported by: Omri Ben Bassat <t-benbassato@microsoft.com> Security: FreeBSD-SA-23:07.bhyve Security: CVE-2023-3494 (cherry picked from commit bed3ae1d7863ac1e0b1e82ae7bf952937e921efe)
Diffstat (limited to 'lib/libgcc_eh')
0 files changed, 0 insertions, 0 deletions