aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-kerberos.c
diff options
context:
space:
mode:
authorLuis Ontanon <luis.ontanon@gmail.com>2007-03-10 02:11:51 +0000
committerLuis Ontanon <luis.ontanon@gmail.com>2007-03-10 02:11:51 +0000
commit403fa20bf1ec0ab00a9e53704b608501ae2ca9c9 (patch)
treed1a391e23375229c0ef31b012ad5db627753b27c /epan/dissectors/packet-kerberos.c
parent9be42ac4dc0ecf32e40e053960d2fa698421bcb1 (diff)
Make sure ENDTRY is evaluated.
On windows if ENDTRY is not evaluated after a exception is being thrown wireshark will crash in dissect_packet() while attempting to pop the last frame of the exception stack. svn path=/trunk/; revision=21014
Diffstat (limited to 'epan/dissectors/packet-kerberos.c')
-rw-r--r--epan/dissectors/packet-kerberos.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index 23e307e6f9..b0b6d9d210 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -792,6 +792,7 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
decrypted_data = g_malloc(length);
for(ske = service_key_list; ske != NULL; ske = g_slist_next(ske)){
+ gboolean do_continue = FALSE;
sk = (service_key_t *) ske->data;
des_fix_parity(DES3_KEY_SIZE, key, sk->contents);
@@ -816,10 +817,12 @@ decrypt_krb5_data(proto_tree *tree, packet_info *pinfo,
}
CATCH (BoundsError) {
tvb_free(encr_tvb);
- continue;
+ do_continue = TRUE;
}
ENDTRY;
+ if (do_continue) continue;
+
data_len = item_len + offset - CONFOUNDER_PLUS_CHECKSUM;
if ((int) item_len + offset > length) {
tvb_free(encr_tvb);