From 9830eadad0d850aa3318120120f5ef5b2d66337b Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Tue, 11 Apr 2017 16:38:35 -0400 Subject: packet-slsk.c: Fix (many potential) SLSK long dissector loops Bug: 13576 Change-Id: I9a0f6c6b682877ed7b5ce4b6b249d4aa4034096a Reviewed-on: https://code.wireshark.org/review/21020 Reviewed-by: Michael Mann --- epan/dissectors/packet-slsk.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'epan/dissectors') diff --git a/epan/dissectors/packet-slsk.c b/epan/dissectors/packet-slsk.c index 4847d063a2..5707d48a05 100644 --- a/epan/dissectors/packet-slsk.c +++ b/epan/dissectors/packet-slsk.c @@ -788,6 +788,8 @@ static int dissect_slsk_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, i=0; j = tvb_get_letohl(tvb, offset); proto_tree_add_uint(slsk_tree, hf_slsk_users_in_room, tvb, offset, 4, tvb_get_letohl(tvb, offset)); offset += 4; + if (j > tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i tvb_reported_length_remaining(tvb, offset)) + break; while (i