summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-ber.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2006-07-08 01:40:53 +0000
committerGerald Combs <gerald@wireshark.org>2006-07-08 01:40:53 +0000
commit974c67ec86282cf3776b301d3fde78dc405d830f (patch)
tree4df7105b44a5f82e7c1b95ed8bf6d9cea359b92d /epan/dissectors/packet-ber.c
parent545236879f3b1f9d056355c1f6d7066e9a9d99be (diff)
downloadwireshark-974c67ec86282cf3776b301d3fde78dc405d830f.tar.gz
Catch another infinite loop. Fixes bug 985.
svn path=/trunk/; revision=18686
Diffstat (limited to 'epan/dissectors/packet-ber.c')
-rw-r--r--epan/dissectors/packet-ber.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index 00288bff6d..dc3b358561 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -1984,6 +1984,9 @@ printf("SQ OF dissect_ber_sq_of(%s) entered\n",name);
if(tvb_length_remaining(tvb, offset)==tvb_reported_length_remaining(tvb, offset)){
while (offset < end_offset){
guint32 len;
+ gint s_offset;
+
+ s_offset = offset;
if(ind){ /* this sequence of was of indefinite length, so check for EOC */
if((tvb_get_guint8(tvb, offset)==0)&&(tvb_get_guint8(tvb, offset+1)==0)){
@@ -1998,6 +2001,7 @@ printf("SQ OF dissect_ber_sq_of(%s) entered\n",name);
/* adjust end_offset if we find somthing that doesnt match */
offset += len;
cnt++;
+ DISSECTOR_ASSERT(offset > s_offset);
}
}
offset = hoffset;