diff options
author | Gerald Combs <gerald@wireshark.org> | 2006-07-08 01:40:53 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2006-07-08 01:40:53 +0000 |
commit | 974c67ec86282cf3776b301d3fde78dc405d830f (patch) | |
tree | 4df7105b44a5f82e7c1b95ed8bf6d9cea359b92d /epan/dissectors/packet-ber.c | |
parent | 545236879f3b1f9d056355c1f6d7066e9a9d99be (diff) | |
download | wireshark-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.c | 4 |
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; |