aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc.c
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2017-01-20 12:01:56 +0100
committerMichael Mann <mmann78@netscape.net>2017-01-21 00:25:56 +0000
commit7e03647c9d756f8290fcc0c81eb1e4df0fc1c80c (patch)
tree0ec4a528dbee88ea84d1c3d495d53d20dc901f29 /epan/dissectors/packet-dcerpc.c
parent5c7b0b96878c269b4e1852c797f548e40af8f836 (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.c19
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