diff options
author | Evan Huus <eapache@gmail.com> | 2014-07-06 09:21:25 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-07-06 14:27:27 +0000 |
commit | 4afd70d4e46c944e5d4e9476103992e621510253 (patch) | |
tree | 0d33d638c96fc5c251edf286ad728a0a1732704d /epan/dissectors/packet-rpc.c | |
parent | 6318a29fa367f118994d689e2a6ac2198bc6e582 (diff) |
Use g_hash_table_new_full to free some values
Fixes a good 80-90KB of leaks in certain cases.
Bug: 10261
Change-Id: I81d57ac67219e730b03649b9fdfc2306807bdb97
Reviewed-on: https://code.wireshark.org/review/2879
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-rpc.c')
-rw-r--r-- | epan/dissectors/packet-rpc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c index 39b7471cf3..edcb224d20 100644 --- a/epan/dissectors/packet-rpc.c +++ b/epan/dissectors/packet-rpc.c @@ -424,6 +424,14 @@ rpc_prog_hash(gconstpointer k) return (key->prog); } +static void +rpc_prog_free_val(gpointer v) +{ + rpc_prog_info_value *value = (rpc_prog_info_value*)v; + + g_array_free(value->procedure_hfs, TRUE); + g_free(value); +} void rpc_init_prog(int proto, guint32 prog, int ett) @@ -4033,8 +4041,10 @@ proto_register_rpc(void) * will be called before any handoff registration routines * are called. */ - rpc_progs = g_hash_table_new(rpc_prog_hash, rpc_prog_equal); - rpc_procs = g_hash_table_new(rpc_proc_hash, rpc_proc_equal); + rpc_progs = g_hash_table_new_full(rpc_prog_hash, rpc_prog_equal, + g_free, rpc_prog_free_val); + rpc_procs = g_hash_table_new_full(rpc_proc_hash, rpc_proc_equal, + g_free, g_free); authgss_contexts=wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); } |