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
diff --git a/bluetooth/1.0/default/h4_protocol.cc b/bluetooth/1.0/default/h4_protocol.cc
index 2008b00..5a89557 100644
--- a/bluetooth/1.0/default/h4_protocol.cc
+++ b/bluetooth/1.0/default/h4_protocol.cc
@@ -81,6 +81,12 @@
}
}
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_);
}