diff options
-rw-r--r-- | src/bluetooth/bluez/hcimanager.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/bluetooth/bluez/hcimanager.cpp b/src/bluetooth/bluez/hcimanager.cpp index dfb99d5a..93bf941b 100644 --- a/src/bluetooth/bluez/hcimanager.cpp +++ b/src/bluetooth/bluez/hcimanager.cpp @@ -477,6 +477,11 @@ void HciManager::handleHciAclPacket(const quint8 *data, int size) const AclData *aclData = reinterpret_cast<AclData *>(rawAclData); data += sizeof *aclData; size -= sizeof *aclData; + + // Consider only directed, complete messages. + if ((aclData->pbFlag != 0 && aclData->pbFlag != 2) || aclData->bcFlag != 0) + return; + if (size < aclData->dataLen) { qCWarning(QT_BT_BLUEZ) << "HCI ACL packet data size" << size << "is smaller than specified size" << aclData->dataLen; @@ -486,10 +491,6 @@ void HciManager::handleHciAclPacket(const quint8 *data, int size) // qCDebug(QT_BT_BLUEZ) << "handle:" << aclData->handle << "PB:" << aclData->pbFlag // << "BC:" << aclData->bcFlag << "data len:" << aclData->dataLen; - // Consider only directed, complete messages. - if ((aclData->pbFlag != 0 && aclData->pbFlag != 2) || aclData->bcFlag != 0) - return; - if (size < int(sizeof(L2CapHeader))) { qCWarning(QT_BT_BLUEZ) << "Unexpected HCI ACL packet size"; return; |