summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2005-07-24 21:02:40 +0000
committerGerald Combs <gerald@wireshark.org>2005-07-24 21:02:40 +0000
commit7743ecf3c9131047bfd668ff3cec505d891682d9 (patch)
tree3d52523a45fe095988b3759aea58bee757430485
parent255b302a82df7d1a03953db43cc1ad1afcbd6cfe (diff)
downloadwireshark-7743ecf3c9131047bfd668ff3cec505d891682d9.tar.gz
Break out of another infinite loop. Fixes bug 293.
svn path=/trunk/; revision=15047
-rw-r--r--plugins/megaco/packet-megaco.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/plugins/megaco/packet-megaco.c b/plugins/megaco/packet-megaco.c
index 4afc9f9f98..368bc89e12 100644
--- a/plugins/megaco/packet-megaco.c
+++ b/plugins/megaco/packet-megaco.c
@@ -1995,12 +1995,17 @@ dissect_megaco_observedeventsdescriptor(tvbuff_t *tvb, packet_info *pinfo, proto
} while ( tvb_help_offset < requested_event_end_offset );
}
+ tvb_previous_offset = tvb_current_offset;
tvb_current_offset = tvb_find_guint8(tvb, tvb_RBRKT,
tvb_observedevents_end_offset, ',');
if (tvb_current_offset == -1 || tvb_current_offset > tvb_observedevents_end_offset ){
tvb_current_offset = tvb_observedevents_end_offset;
}
+ if (tvb_current_offset <= tvb_previous_offset) {
+ proto_tree_add_text(megaco_observedevent_tree, tvb, 0, 0, "[ Parse error: Invalid offset ]");
+ return;
+ }
tvb_previous_offset = tvb_skip_wsp(tvb, tvb_current_offset+1);