aboutsummaryrefslogtreecommitdiff
path: root/parser/l2cap.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-02-09 16:04:25 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-02-09 16:04:25 +0000
commitb1368add22552e7bd1b094dddccb00c153e9b344 (patch)
treefff4cc5122d4d3a8ec99a6130e40897f39885513 /parser/l2cap.c
parent82a2b69f459590202bc8c5c17950eb4eeb836938 (diff)
downloadhcidump-b1368add22552e7bd1b094dddccb00c153e9b344.tar.gz
Fix stupid DoS problem
Diffstat (limited to 'parser/l2cap.c')
-rw-r--r--parser/l2cap.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/parser/l2cap.c b/parser/l2cap.c
index a494198..8d513f8 100644
--- a/parser/l2cap.c
+++ b/parser/l2cap.c
@@ -699,8 +699,12 @@ static void l2cap_parse(int level, struct frame *frm)
hdr->code, hdr->ident, btohs(hdr->len));
raw_dump(level, frm);
}
- frm->ptr += btohs(hdr->len);
- frm->len -= btohs(hdr->len);
+
+ if (frm->len > btohs(hdr->len)) {
+ frm->len -= btohs(hdr->len);
+ frm->ptr += btohs(hdr->len);
+ } else
+ frm->len = 0;
}
} else if (cid == 0x2) {
/* Connectionless channel */