aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rpc.c
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2014-07-06 09:21:25 -0400
committerAnders Broman <a.broman58@gmail.com>2014-07-06 14:27:27 +0000
commit4afd70d4e46c944e5d4e9476103992e621510253 (patch)
tree0d33d638c96fc5c251edf286ad728a0a1732704d /epan/dissectors/packet-rpc.c
parent6318a29fa367f118994d689e2a6ac2198bc6e582 (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.c14
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());
}