diff options
author | Dario Lombardo <lomato@gmail.com> | 2017-01-20 12:01:56 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-01-21 00:25:56 +0000 |
commit | 7e03647c9d756f8290fcc0c81eb1e4df0fc1c80c (patch) | |
tree | 0ec4a528dbee88ea84d1c3d495d53d20dc901f29 /epan/dissectors/packet-dcerpc.c | |
parent | 5c7b0b96878c269b4e1852c797f548e40af8f836 (diff) |
dcerpc: add shutdown routine.
Also use g_hash_table_new_full to ease the free procedure.
Change-Id: I0a411cccbd651cca18e94a048722bf5520903deb
Reviewed-on: https://code.wireshark.org/review/19691
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-dcerpc.c')
-rw-r--r-- | epan/dissectors/packet-dcerpc.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c index 4f04a3c8bb..f435edf831 100644 --- a/epan/dissectors/packet-dcerpc.c +++ b/epan/dissectors/packet-dcerpc.c @@ -6488,6 +6488,21 @@ dcerpc_cleanup_protocol(void) g_hash_table_destroy(dcerpc_matched); } +static void +dcerpc_auth_subdissector_list_free(gpointer p, gpointer user_data _U_) +{ + g_free(p); +} + +static void +dcerpc_shutdown(void) +{ + g_slist_foreach(dcerpc_auth_subdissector_list, dcerpc_auth_subdissector_list_free, NULL); + g_slist_free(dcerpc_auth_subdissector_list); + g_hash_table_destroy(dcerpc_uuids); + tvb_free(tvb_trailer_signature); +} + void proto_register_dcerpc(void) { @@ -6954,7 +6969,7 @@ proto_register_dcerpc(void) "Whether the DCE/RPC dissector should reassemble fragmented DCE/RPC PDUs", &dcerpc_reassemble); register_init_routine(dcerpc_reassemble_init); - dcerpc_uuids = g_hash_table_new(dcerpc_uuid_hash, dcerpc_uuid_equal); + dcerpc_uuids = g_hash_table_new_full(dcerpc_uuid_hash, dcerpc_uuid_equal, g_free, g_free); dcerpc_tap = register_tap("dcerpc"); register_decode_as(&dcerpc_da); @@ -6964,6 +6979,8 @@ proto_register_dcerpc(void) tvb_trailer_signature = tvb_new_real_data(TRAILER_SIGNATURE, sizeof(TRAILER_SIGNATURE), sizeof(TRAILER_SIGNATURE)); + + register_shutdown_routine(dcerpc_shutdown); } void |