aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-radius.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2017-02-28 17:05:10 +0100
committerMichael Mann <mmann78@netscape.net>2017-02-28 19:04:42 +0000
commit87b7242e69845db13daf570101903521e17cfd50 (patch)
tree4891ee9f6ad602b407e6295e4c71a53d34fb4457 /epan/dissectors/packet-radius.c
parent77d309c92fdd3e7826c12301d3d4ab3a56251b1b (diff)
radius: fix memleaks of value_string
The value_string was taken from the GArray and added to radius_attr_info_t, but these were not properly freed. Change-Id: I8de2b84760887c41229a57881ff46cedcef1d22f Reviewed-on: https://code.wireshark.org/review/20311 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-radius.c')
-rw-r--r--epan/dissectors/packet-radius.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index c57aeae894..d396d5c38c 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -2141,10 +2141,18 @@ void
free_radius_attr_info(gpointer data)
{
radius_attr_info_t* attr = (radius_attr_info_t*)data;
+ value_string *vs = (value_string *)attr->vs;
g_free(attr->name);
- if (attr->tlvs_by_id)
+ if (attr->tlvs_by_id) {
g_hash_table_destroy(attr->tlvs_by_id);
+ }
+ if (vs) {
+ for (; vs->strptr; vs++) {
+ g_free((gpointer)vs->strptr);
+ }
+ g_free((gpointer)attr->vs);
+ }
g_free(attr);
}