aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-xml.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2016-08-29 01:34:22 +0200
committerPeter Wu <peter@lekensteyn.nl>2016-08-29 22:09:22 +0000
commit961f743d69b323aa217a6b39184485d6a0bfb2d5 (patch)
tree4883eeedc67e2520e670d21a3887c0b88b10fa47 /epan/dissectors/packet-xml.c
parenta04b6fcb3db901734ed948134c973996786be8b7 (diff)
xml: fix some memleaks
No more memleaks reported for the attachment in bug 12790 :-) Change-Id: I8472e442143b332edfacdf9ef3b8b893f1ec4386 Ping-Bug: 12790 Reviewed-on: https://code.wireshark.org/review/17365 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/dissectors/packet-xml.c')
-rw-r--r--epan/dissectors/packet-xml.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c
index e21f32a18b..bafd884832 100644
--- a/epan/dissectors/packet-xml.c
+++ b/epan/dissectors/packet-xml.c
@@ -1083,7 +1083,7 @@ static void register_dtd(dtd_build_data_t *dtd_data, GString *errors)
free_elements(NULL, element, NULL);
} else {
g_hash_table_insert(elements, (gpointer)element->name, element);
- g_ptr_array_add(element_names, g_strdup(element->name));
+ g_ptr_array_add(element_names, wmem_strdup(wmem_epan_scope(), element->name));
}
g_free(nl);
@@ -1186,8 +1186,6 @@ static void register_dtd(dtd_build_data_t *dtd_data, GString *errors)
hfs, etts, dtd_data->proto_name);
g_hash_table_insert(root_element->elements, (gpointer)fresh->name, fresh);
}
-
- g_free(curr_name);
}
} else {
@@ -1232,19 +1230,21 @@ static void register_dtd(dtd_build_data_t *dtd_data, GString *errors)
*/
if( dtd_data->proto_name ) {
gint *ett_p;
+ gchar *full_name, *short_name;
- if ( ! dtd_data->description) {
- dtd_data->description = wmem_strdup(wmem_epan_scope(), root_name);
+ if (dtd_data->description) {
+ full_name = wmem_strdup(wmem_epan_scope(), dtd_data->description);
+ } else {
+ full_name = wmem_strdup(wmem_epan_scope(), root_name);
}
+ short_name = wmem_strdup(wmem_epan_scope(), dtd_data->proto_name);
ett_p = &root_element->ett;
g_array_append_val(etts, ett_p);
add_xml_field(hfs, &root_element->hf_cdata, root_element->name, root_element->fqn);
- root_element->hf_tag = proto_register_protocol(dtd_data->description,
- dtd_data->proto_name,
- dtd_data->proto_name);
+ root_element->hf_tag = proto_register_protocol(full_name, short_name, short_name);
proto_register_field_array(root_element->hf_tag, (hf_register_info*)wmem_array_get_raw(hfs), wmem_array_get_count(hfs));
proto_register_subtree_array((gint **)g_array_data(etts), etts->len);
@@ -1253,8 +1253,6 @@ static void register_dtd(dtd_build_data_t *dtd_data, GString *errors)
dtd_data->media_type = NULL;
}
- dtd_data->description = NULL;
- dtd_data->proto_name = NULL;
g_array_free(etts, TRUE);
}