Bluetooth: Check H4 HCI packet types

An invalid type byte can cause an access outside
the bounds of the array.

Bug: 64565737
Test: Bluetooth On/Off
Change-Id: Ie11dd62942f66b9fc60ebce2e4339c37d597fdf0
This commit is contained in:
Myles Watson 2017-08-11 16:47:28 -07:00
parent 36cb0a2d99
commit 521621d515

View file

@ -81,6 +81,12 @@ void H4Protocol::OnDataReady(int fd) {
}
}
hci_packet_type_ = static_cast<HciPacketType>(buffer[0]);
if (hci_packet_type_ != HCI_PACKET_TYPE_ACL_DATA &&
hci_packet_type_ != HCI_PACKET_TYPE_SCO_DATA &&
hci_packet_type_ != HCI_PACKET_TYPE_EVENT) {
LOG_ALWAYS_FATAL("%s: Unimplemented packet type %d", __func__,
static_cast<int>(hci_packet_type_));
}
} else {
hci_packetizer_.OnDataReady(fd, hci_packet_type_);
}