Skip to contentSkip to conversation

Fix L2CAP cid matching

PATCH Applied Peter Hurley 2 participants 2 messages Aug 13, 2011 – Aug 22, 2011 Bluetooth drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix L2CAP cid matching

SWYgbXVsdGlwbGUgQUNMIGNvbm5lY3Rpb25zIGFyZSB1c2luZyBpZGVudGljYWwgY2lkIHZhbHVl cywgdGhlIEwyQ0FQDQpwYXJzZXIgd2lsbCBtYXRjaCB0aGUgZmlyc3QgYXZhaWwgY2lkIGZvdW5k IGluIHRoZSBjaWQgdGFibGUuIFRoaXMNCmVycm9yIG9mdGVuIGxlYWRzIHRvIGluY29ycmVjdCBw c20gZGV0ZXJtaW5hdGlvbiwgYW5kIHRodXMgaW5jb3JyZWN0DQpwYXJzaW5nIG9mIGhpZ2hlci1s YXllciBmcmFtZXMuDQoNCldoZW4gc2VhcmNoaW5nIHRoZSBjaWQgdGFibGUsIGEgbWF0Y2hpbmcg Y2lkIHZhbHVlIG11c3QgbWF0Y2ggYnkNCkFDTCBoYW5kbGUgYXMgd2VsbC4NCi0tLQ0KIHBhcnNl ci9sMmNhcC5jIHwgICA0MiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0NCiAxIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQ0K DQpkaWZmIC0tZ2l0IGEvcGFyc2VyL2wyY2FwLmMgYi9wYXJzZXIvbDJjYXAuYw0KaW5kZXggNjM0 NWY4ZC4uODhjYTFmMyAxMDA2NDQNCi0tLSBhL3BhcnNlci9sMmNhcC5jDQorKysgYi9wYXJzZXIv bDJjYXAuYw0KQEAgLTE3Miw0NSArMTcyLDQ1IEBAIHN0YXRpYyB2b2lkIGRlbF9oYW5kbGUodWlu dDE2X3QgaGFuZGxlKQ0KIAkJCX0NCiAJfQ0KIH0NCi1zdGF0aWMgdWludDE2X3QgZ2V0X3BzbShp bnQgaW4sIHVpbnQxNl90IGNpZCkNCitzdGF0aWMgdWludDE2X3QgZ2V0X3BzbShpbnQgaW4sIHVp bnQxNl90IGhhbmRsZSwgdWludDE2X3QgY2lkKQ0KIHsNCiAJcmVnaXN0ZXIgY2lkX2luZm8gKnRh YmxlID0gY2lkX3RhYmxlW2luXTsNCiAJcmVnaXN0ZXIgaW50IGk7DQogDQogCWZvciAoaSA9IDA7 IGkgPCBDSURfVEFCTEVfU0laRTsgaSsrKQ0KLQkJaWYgKHRhYmxlW2ldLmNpZCA9PSBjaWQpDQor CQlpZiAodGFibGVbaV0uaGFuZGxlID09IGhhbmRsZSAmJiB0YWJsZVtpXS5jaWQgPT0gY2lkKQ0K IAkJCXJldHVybiB0YWJsZVtpXS5wc207DQogCXJldHVybiBwYXJzZXIuZGVmcHNtOw0KIH0NCiAN Ci1zdGF0aWMgdWludDE2X3QgZ2V0X251bShpbnQgaW4sIHVpbnQxNl90IGNpZCkNCitzdGF0aWMg dWludDE2X3QgZ2V0X251bShpbnQgaW4sIHVpbnQxNl90IGhhbmRsZSwgdWludDE2X3QgY2lkKQ0K IHsNCiAJcmVnaXN0ZXIgY2lkX2luZm8gKnRhYmxlID0gY2lkX3RhYmxlW2luXTsNCiAJcmVnaXN0 ZXIgaW50IGk7DQogDQogCWZvciAoaSA9IDA7IGkgPCBDSURfVEFCTEVfU0laRTsgaSsrKQ0KLQkJ aWYgKHRhYmxlW2ldLmNpZCA9PSBjaWQpDQorCQlpZiAodGFibGVbaV0uaGFuZGxlID09IGhhbmRs ZSAmJiB0YWJsZVtpXS5jaWQgPT0gY2lkKQ0KIAkJCXJldHVybiB0YWJsZVtpXS5udW07DQogCXJl dHVybiAwOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBzZXRfbW9kZShpbnQgaW4sIHVpbnQxNl90IGNp ZCwgdWludDhfdCBtb2RlKQ0KK3N0YXRpYyB2b2lkIHNldF9tb2RlKGludCBpbiwgdWludDE2X3Qg aGFuZGxlLCB1aW50MTZfdCBjaWQsIHVpbnQ4X3QgbW9kZSkNCiB7DQogCXJlZ2lzdGVyIGNpZF9p bmZvICp0YWJsZSA9IGNpZF90YWJsZVtpbl07DQogCXJlZ2lzdGVyIGludCBpOw0KIA0KIAlmb3Ig KGkgPSAwOyBpIDwgQ0lEX1RBQkxFX1NJWkU7IGkrKykNCi0JCWlmICh0YWJsZVtpXS5jaWQgPT0g Y2lkKQ0KKwkJaWYgKHRhYmxlW2ldLmhhbmRsZSA9PSBoYW5kbGUgJiYgdGFibGVbaV0uY2lkID09 IGNpZCkNCiAJCQl0YWJsZVtpXS5tb2RlID0gbW9kZTsNCiB9DQogDQotc3RhdGljIHVpbnQ4X3Qg Z2V0X21vZGUoaW50IGluLCB1aW50MTZfdCBjaWQpDQorc3RhdGljIHVpbnQ4X3QgZ2V0X21vZGUo aW50IGluLCB1aW50MTZfdCBoYW5kbGUsIHVpbnQxNl90IGNpZCkNCiB7DQogCXJlZ2lzdGVyIGNp ZF9pbmZvICp0YWJsZSA9IGNpZF90YWJsZVtpbl07DQogCXJlZ2lzdGVyIGludCBpOw0KIA0KIAlm b3IgKGkgPSAwOyBpIDwgQ0lEX1RBQkxFX1NJWkU7IGkrKykNCi0JCWlmICh0YWJsZVtpXS5jaWQg PT0gY2lkKQ0KKwkJaWYgKHRhYmxlW2ldLmhhbmRsZSA9PSBoYW5kbGUgJiYgdGFibGVbaV0uY2lk ID09IGNpZCkNCiAJCQlyZXR1cm4gdGFibGVbaV0ubW9kZTsNCiAJcmV0dXJuIDA7DQogfQ0KQEAg LTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29ubl9yc3AoaW50IGxldmVsLCBz dHJ1Y3QgZnJhbWUgKmZybSkNCiANCiAJc3dpdGNoIChoLT5yZXN1bHQpIHsNCiAJY2FzZSBMMkNB UF9DUl9TVUNDRVNTOg0KLQkJaWYgKChwc20gPSBnZXRfcHNtKCFmcm0tPmluLCBzY2lkKSkpDQor CQlpZiAoKHBzbSA9IGdldF9wc20oIWZybS0+aW4sIGZybS0+aGFuZGxlLCBzY2lkKSkpDQogCQkJ YWRkX2NpZChmcm0tPmluLCBmcm0tPmhhbmRsZSwgZGNpZCwgcHNtKTsNCiAJCWJyZWFrOw0KIA0K QEAgLTQ1OSwxMiArNDU5LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25uX3JzcChpbnQgbGV2 ZWwsIHN0cnVjdCBmcmFtZSAqZnJtKQ0KIAkJcHJpbnRmKCJcbiIpOw0KIH0NCiANCi1zdGF0aWMg dm9pZCBjb25mX3JmYyh2b2lkICpwdHIsIGludCBsZW4sIGludCBpbiwgdWludDE2X3QgY2lkKQ0K K3N0YXRpYyB2b2lkIGNvbmZfcmZjKHZvaWQgKnB0ciwgaW50IGxlbiwgaW50IGluLCB1aW50MTZf dCBoYW5kbGUsDQorCQkJCQkJCQl1aW50MTZfdCBjaWQpDQogew0KIAl1aW50OF90IG1vZGU7DQog DQogCW1vZGUgPSAqKCh1aW50OF90ICopIHB0cik7DQotCXNldF9tb2RlKGluLCBjaWQsIG1vZGUp Ow0KKwlzZXRfbW9kZShpbiwgaGFuZGxlLCBjaWQsIG1vZGUpOw0KIA0KIAlwcmludGYoIlJGQyAw eCUwMnggKCVzIiwgbW9kZSwgbW9kZTJzdHIobW9kZSkpOw0KIAlpZiAobW9kZSA+PSAweDAxICYm IG1vZGUgPD0gMHgwNCkgew0KQEAgLTUxMCw3ICs1MTEsOCBAQCBzdGF0aWMgdm9pZCBjb25mX2Zj cyh2b2lkICpwdHIsIGludCBsZW4pDQogCQlwcmludGYoIiAweCUyLjJ4ICglcykiLCBmY3MsIGZj czJzdHIoZmNzKSk7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIGNvbmZfb3B0KGludCBsZXZlbCwgdm9p ZCAqcHRyLCBpbnQgbGVuLCBpbnQgaW4sIHVpbnQxNl90IGNpZCkNCitzdGF0aWMgdm9pZCBjb25m X29wdChpbnQgbGV2ZWwsIHZvaWQgKnB0ciwgaW50IGxlbiwgaW50IGluLCB1aW50MTZfdCBoYW5k bGUsDQorCQkJCQkJCQl1aW50MTZfdCBjaWQpDQogew0KIAlpbnQgaW5kZW50ID0gMDsNCiAJcF9p bmRlbnQobGV2ZWwsIDApOw0KQEAgLTUzMCw3ICs1MzIsNyBAQCBzdGF0aWMgdm9pZCBjb25mX29w dChpbnQgbGV2ZWwsIHZvaWQgKnB0ciwgaW50IGxlbiwgaW50IGluLCB1aW50MTZfdCBjaWQpDQog DQogCQlzd2l0Y2ggKGgtPnR5cGUgJiAweDdmKSB7DQogCQljYXNlIEwyQ0FQX0NPTkZfTVRVOg0K LQkJCXNldF9tb2RlKGluLCBjaWQsIDB4MDApOw0KKwkJCXNldF9tb2RlKGluLCBoYW5kbGUsIGNp ZCwgMHgwMCk7DQogCQkJcHJpbnRmKCJNVFUiKTsNCiAJCQlpZiAoaC0+bGVuID4gMCkNCiAJCQkJ cHJpbnRmKCIgJWQiLCBnZXRfdmFsKGgtPnZhbCwgaC0+bGVuKSk7DQpAQCAtNTQ5LDcgKzU1MSw3 IEBAIHN0YXRpYyB2b2lkIGNvbmZfb3B0KGludCBsZXZlbCwgdm9pZCAqcHRyLCBpbnQgbGVuLCBp bnQgaW4sIHVpbnQxNl90IGNpZCkNCiAJCQlicmVhazsNCiANCiAJCWNhc2UgTDJDQVBfQ09ORl9S RkM6DQotCQkJY29uZl9yZmMoaC0+dmFsLCBoLT5sZW4sIGluLCBjaWQpOw0KKwkJCWNvbmZfcmZj KGgtPnZhbCwgaC0+bGVuLCBpbiwgaGFuZGxlLCBjaWQpOw0KIAkJCWJyZWFrOw0KIA0KIAkJY2Fz ZSBMMkNBUF9DT05GX0ZDUzoNCkBAIC02MTksNyArNjIxLDggQEAgc3RhdGljIGlubGluZSB2b2lk IGNvbmZfcmVxKGludCBsZXZlbCwgbDJjYXBfY21kX2hkciAqY21kLCBzdHJ1Y3QgZnJhbWUgKmZy bSkNCiAJCQlkY2lkLCBidG9ocyhoLT5mbGFncyksIGNsZW4pOw0KIA0KIAlpZiAoY2xlbiA+IDAp DQotCQljb25mX29wdChsZXZlbCArIDEsIGgtPmRhdGEsIGNsZW4sIGZybS0+aW4sIGRjaWQpOw0K KwkJY29uZl9vcHQobGV2ZWwgKyAxLCBoLT5kYXRhLCBjbGVuLCBmcm0tPmluLCBmcm0tPmhhbmRs ZSwNCisJCQkJCQkJCQlkY2lkKTsNCiB9DQogDQogc3RhdGljIGlubGluZSB2b2lkIGNvbmZfcnNw KGludCBsZXZlbCwgbDJjYXBfY21kX2hkciAqY21kLCBzdHJ1Y3QgZnJhbWUgKmZybSkNCkBAIC02 NDMsNyArNjQ2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbmZfcnNwKGludCBsZXZlbCwgbDJj YXBfY21kX2hkciAqY21kLCBzdHJ1Y3QgZnJhbWUgKmZybSkNCiAJCWlmIChyZXN1bHQgPT0gMHgw MDAzKQ0KIAkJCWNvbmZfbGlzdChsZXZlbCArIDEsIGgtPmRhdGEsIGNsZW4pOw0KIAkJZWxzZQ0K LQkJCWNvbmZfb3B0KGxldmVsICsgMSwgaC0+ZGF0YSwgY2xlbiwgZnJtLT5pbiwgc2NpZCk7DQor CQkJY29uZl9vcHQobGV2ZWwgKyAxLCBoLT5kYXRhLCBjbGVuLCBmcm0tPmluLA0KKwkJCQkJCQlm cm0tPmhhbmRsZSwgc2NpZCk7DQogCX0gZWxzZSB7DQogCQlwX2luZGVudChsZXZlbCArIDEsIGZy bSk7DQogCQlwcmludGYoIiVzXG4iLCBjb25mcmVzdWx0MnN0cihyZXN1bHQpKTsNCkBAIC04NjMs MTMgKzg2NywxMyBAQCBzdGF0aWMgdm9pZCBsMmNhcF9wYXJzZShpbnQgbGV2ZWwsIHN0cnVjdCBm cmFtZSAqZnJtKQ0KIAl9IGVsc2Ugew0KIAkJLyogQ29ubmVjdGlvbiBvcmllbnRlZCBjaGFubmVs ICovDQogDQotCQl1aW50OF90IG1vZGUgPSBnZXRfbW9kZSghZnJtLT5pbiwgY2lkKTsNCi0JCXVp bnQxNl90IHBzbSA9IGdldF9wc20oIWZybS0+aW4sIGNpZCk7DQorCQl1aW50OF90IG1vZGUgPSBn ZXRfbW9kZSghZnJtLT5pbiwgZnJtLT5oYW5kbGUsIGNpZCk7DQorCQl1aW50MTZfdCBwc20gPSBn ZXRfcHNtKCFmcm0tPmluLCBmcm0tPmhhbmRsZSwgY2lkKTsNCiAJCXVpbnQxNl90IGN0cmwgPSAw LCBmY3MgPSAwOw0KIAkJdWludDMyX3QgcHJvdG87DQogDQogCQlmcm0tPmNpZCA9IGNpZDsNCi0J CWZybS0+bnVtID0gZ2V0X251bSghZnJtLT5pbiwgY2lkKTsNCisJCWZybS0+bnVtID0gZ2V0X251 bSghZnJtLT5pbiwgZnJtLT5oYW5kbGUsIGNpZCk7DQogDQogCQlpZiAobW9kZSA+IDApIHsNCiAJ CQljdHJsID0gYnRvaHMoYnRfZ2V0X3VuYWxpZ25lZCgodWludDE2X3QgKikgZnJtLT5wdHIpKTsN Ci0tIA0KMS43LjQuMQ0KDQo=

#1 lore raw

Hi Peter,

Quoted 10 lines · Peter Hurley

If multiple ACL connections are using identical cid values, the L2CAP parser will match the first avail cid found in the cid table. This error often leads to incorrect psm determination, and thus incorrect parsing of higher-layer frames.

When searching the cid table, a matching cid value must match by ACL handle as well.

---
 parser/l2cap.c |   42 +++++++++++++++++++++++-------------------
 1 files changed, 23 insertions(+), 19 deletions(-)

Applied, but again I got this because of an unclean patch:

/home/jh/src/bluez-hcidump/.git/rebase-apply/patch:14: trailing whitespace. static uint16_t get_psm(int in, uint16_t handle, uint16_t cid) /home/jh/src/bluez-hcidump/.git/rebase-apply/patch:21: trailing whitespace.

		if (table[i].handle == handle && table[i].cid == cid)
/home/jh/src/bluez-hcidump/.git/rebase-apply/patch:27: trailing whitespace.
static uint16_t get_num(int in, uint16_t handle, uint16_t cid)
/home/jh/src/bluez-hcidump/.git/rebase-apply/patch:34: trailing whitespace.
		if (table[i].handle == handle && table[i].cid == cid)

/home/jh/src/bluez-hcidump/.git/rebase-apply/patch:40: trailing whitespace. static void set_mode(int in, uint16_t handle, uint16_t cid, uint8_t mode)
warning: squelched 18 whitespace errors
warning: 23 lines add whitespace errors.

Johan