aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2018-05-09 22:37:41 +0200
committerPeter Wu <peter@lekensteyn.nl>2018-05-14 13:44:23 +0000
commit10306f9a32ee4ca65283110ac286bb1ba9ef2a01 (patch)
tree05e4b1ac1b9387f00007ad583571d2a57566c0e7
parentbb81e1807b2a5b67905cfa1594dbbb535fe8b37e (diff)
Free g_array_free-related memory leaks
g_array_free(a, FALSE) returns "a->data". Callers that do not handle this will leak memory. Convert other users to use the return value instead of direct access to "a->data". Change-Id: I0a29864e8106c0bf09e9573ef29e4474179c4171 Reviewed-on: https://code.wireshark.org/review/27438 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r--epan/dfilter/dfilter-macro.c4
-rw-r--r--epan/dissectors/packet-diameter.c3
-rw-r--r--epan/oids.c3
-rw-r--r--epan/radius_dict.l6
-rw-r--r--epan/stats_tree.c2
-rw-r--r--epan/wslua/wslua_pref.c4
-rw-r--r--epan/wslua/wslua_proto_field.c8
7 files changed, 9 insertions, 21 deletions
diff --git a/epan/dfilter/dfilter-macro.c b/epan/dfilter/dfilter-macro.c
index f94970a895..5ff2493489 100644
--- a/epan/dfilter/dfilter-macro.c
+++ b/epan/dfilter/dfilter-macro.c
@@ -412,9 +412,7 @@ done:
m->parts = (gchar **)g_ptr_array_free(parts, FALSE);
g_free(m->args_pos);
- m->args_pos = (int*)(void *)args_pos->data;
-
- g_array_free(args_pos,FALSE);
+ m->args_pos = (int*)(void *)g_array_free(args_pos, FALSE);
m->argc = argc;
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c
index c0911d99f3..136e401bb0 100644
--- a/epan/dissectors/packet-diameter.c
+++ b/epan/dissectors/packet-diameter.c
@@ -2006,8 +2006,7 @@ dictionary_load(void)
}
}
- vnd_short_vs = (value_string *)vnd_shrt_arr->data;
- g_array_free(vnd_shrt_arr,FALSE);
+ vnd_short_vs = (value_string *)g_array_free(vnd_shrt_arr, FALSE);
if ((c = d->cmds)) {
for (; c; c = c->next) {
diff --git a/epan/oids.c b/epan/oids.c
index b30ed2d084..400f7b8ac6 100644
--- a/epan/oids.c
+++ b/epan/oids.c
@@ -660,8 +660,7 @@ static void register_mibs(void) {
}
}
- hf.hfinfo.strings = vals->data;
- g_array_free(vals,FALSE);
+ hf.hfinfo.strings = g_array_free(vals, FALSE);
}
#if 0 /* packet-snmp does not handle bits yet */
} else if (smiType->basetype == SMI_BASETYPE_BITS && ( smiEnum = smiGetFirstNamedNumber(smiType) )) {
diff --git a/epan/radius_dict.l b/epan/radius_dict.l
index 05bfb92585..1313dfb8c2 100644
--- a/epan/radius_dict.l
+++ b/epan/radius_dict.l
@@ -669,9 +669,8 @@ static void setup_tlvs(gpointer k _U_, gpointer v, gpointer p) {
} vs;
if (g_hash_table_lookup_extended(state->value_strings, s->name, &key, &vs.p)) {
- s->vs = (value_string*)(void *)vs.a->data;
g_hash_table_steal(state->value_strings, key);
- g_array_free(vs.a, FALSE);
+ s->vs = (value_string*)(void *)g_array_free(vs.a, FALSE);
g_free(key);
}
}
@@ -687,9 +686,8 @@ static void setup_attrs(gpointer k _U_, gpointer v, gpointer p) {
} vs;
if (g_hash_table_lookup_extended(state->value_strings, a->name, &key, &vs.p) ) {
- a->vs = (value_string*)(void *)vs.a->data;
g_hash_table_steal(state->value_strings, key);
- g_array_free(vs.a, FALSE);
+ a->vs = (value_string*)(void *)g_array_free(vs.a, FALSE);
g_free(key);
}
diff --git a/epan/stats_tree.c b/epan/stats_tree.c
index 51db3b2fb9..be90f8e2ef 100644
--- a/epan/stats_tree.c
+++ b/epan/stats_tree.c
@@ -1306,7 +1306,7 @@ WS_DLL_PUBLIC void stats_tree_format_node_as_str(const stat_node *node,
stats_tree_format_node_as_str(g_array_index(Children,stat_node*,count), s, format_type,
indent, full_path, maxnamelen, sort_column, sort_descending);
}
- g_array_free(Children,FALSE);
+ g_array_free(Children, TRUE);
}
g_free(full_path);
diff --git a/epan/wslua/wslua_pref.c b/epan/wslua/wslua_pref.c
index a09c2b79a6..4ec4d1076f 100644
--- a/epan/wslua/wslua_pref.c
+++ b/epan/wslua/wslua_pref.c
@@ -78,9 +78,7 @@ static enum_val_t* get_enum(lua_State *L, int idx)
g_array_append_val(es,last);
- ret = (enum_val_t*)(void*)es->data;
-
- g_array_free(es,FALSE);
+ ret = (enum_val_t*)(void*)g_array_free(es, FALSE);
return ret;
}
diff --git a/epan/wslua/wslua_proto_field.c b/epan/wslua/wslua_proto_field.c
index 65de1adb98..ffddd8bec0 100644
--- a/epan/wslua/wslua_proto_field.c
+++ b/epan/wslua/wslua_proto_field.c
@@ -188,9 +188,7 @@ static value_string* value_string_from_table(lua_State* L, int idx) {
lua_pop(L, 1);
}
- vs32 = (value_string*)(void*)vs->data;
-
- g_array_free(vs,FALSE);
+ vs32 = (value_string*)(void*)g_array_free(vs, FALSE);
return vs32;
}
@@ -243,9 +241,7 @@ static val64_string* val64_string_from_table(lua_State* L, int idx) {
lua_pop(L, 1);
}
- vs64 = (val64_string*)(void*)vs->data;
-
- g_array_free(vs,FALSE);
+ vs64 = (val64_string*)(void*)g_array_free(vs, FALSE);
return vs64;
}