diff options
author | lego <lego@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-03-10 02:11:51 +0000 |
---|---|---|
committer | lego <lego@f5534014-38df-0310-8fa8-9805f1628bb7> | 2007-03-10 02:11:51 +0000 |
commit | ae59070bdf86af19f34387fef536baffbaea3ac5 (patch) | |
tree | d1a391e23375229c0ef31b012ad5db627753b27c /epan/dissectors/packet-kerberos.c | |
parent | 62d4b780aa11559a4169b745303d3aa16a32e331 (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.c | 5 |
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); |