Page MenuHomeFreeBSD

bhyve: Fix a buffer overread in the PCI hda device model.
ClosedPublic

Authored by jhb on Jan 19 2023, 10:40 PM.
Tags
None
Referenced Files
F153669579: D38128.id.diff
Wed, Apr 22, 7:23 PM
Unknown Object (File)
Tue, Apr 21, 9:05 PM
Unknown Object (File)
Sun, Apr 19, 7:01 PM
Unknown Object (File)
Sun, Apr 19, 12:34 PM
Unknown Object (File)
Wed, Apr 15, 2:06 PM
Unknown Object (File)
Wed, Apr 15, 4:29 AM
Unknown Object (File)
Wed, Apr 15, 2:43 AM
Unknown Object (File)
Tue, Apr 7, 12:39 PM
Subscribers

Details

Summary

The sc->codecs array contains HDA_CODEC_MAX (15) entries. The
guest-supplied cad field in the verb provided to hda_send_command is a
4-bit field that was used as an index into sc->codecs without any
bounds checking. The highest value (15) would overflow the array.

Other uses of sc->codecs in the device model used sc->codecs_no to
determine which array indices have been initialized, so use a similar
check to reject requests for uninitialized or invalid cad indices in
hda_send_command.

PR: 264582
Reported by: Robert Morris <rtm@lcs.mit.edu>
Sponsored by: The FreeBSD Foundation

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable