aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-kerberos.c
diff options
context:
space:
mode:
authorlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>2007-03-10 02:11:51 +0000
committerlego <lego@f5534014-38df-0310-8fa8-9805f1628bb7>2007-03-10 02:11:51 +0000
commitae59070bdf86af19f34387fef536baffbaea3ac5 (patch)
treed1a391e23375229c0ef31b012ad5db627753b27c /epan/dissectors/packet-kerberos.c
parent62d4b780aa11559a4169b745303d3aa16a32e331 (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. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@21014 f5534014-38df-0310-8fa8-9805f1628bb7
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);