|
|
@@ -3336,6 +3336,8 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data
|
|
|
|
|
|
while (len >= L2CAP_CONF_OPT_SIZE) {
|
|
|
len -= l2cap_get_conf_opt(&req, &type, &olen, &val);
|
|
|
+ if (len < 0)
|
|
|
+ break;
|
|
|
|
|
|
hint = type & L2CAP_CONF_HINT;
|
|
|
type &= L2CAP_CONF_MASK;
|
|
|
@@ -3554,6 +3556,8 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len,
|
|
|
|
|
|
while (len >= L2CAP_CONF_OPT_SIZE) {
|
|
|
len -= l2cap_get_conf_opt(&rsp, &type, &olen, &val);
|
|
|
+ if (len < 0)
|
|
|
+ break;
|
|
|
|
|
|
switch (type) {
|
|
|
case L2CAP_CONF_MTU:
|
|
|
@@ -3739,6 +3743,8 @@ static void l2cap_conf_rfc_get(struct l2cap_chan *chan, void *rsp, int len)
|
|
|
|
|
|
while (len >= L2CAP_CONF_OPT_SIZE) {
|
|
|
len -= l2cap_get_conf_opt(&rsp, &type, &olen, &val);
|
|
|
+ if (len < 0)
|
|
|
+ break;
|
|
|
|
|
|
switch (type) {
|
|
|
case L2CAP_CONF_RFC:
|