aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tpncp.c
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss.ws@gmail.com>2013-11-13 17:11:21 +0000
committerJeff Morriss <jeff.morriss.ws@gmail.com>2013-11-13 17:11:21 +0000
commit219fb7fa3eb053e3beaadae9152d691acf12a166 (patch)
treed343dd927ad640b96b62e053024c75d7e9c408c9 /epan/dissectors/packet-tpncp.c
parent6b7ab3bd3319d92799aa1354ac542cd00afc321b (diff)
Fix CID 1113411: close the file descriptor and free the file name even in
error cases. svn path=/trunk/; revision=53301
Diffstat (limited to 'epan/dissectors/packet-tpncp.c')
-rw-r--r--epan/dissectors/packet-tpncp.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/epan/dissectors/packet-tpncp.c b/epan/dissectors/packet-tpncp.c
index cbbf0ed170..fe48c4aea7 100644
--- a/epan/dissectors/packet-tpncp.c
+++ b/epan/dissectors/packet-tpncp.c
@@ -675,7 +675,7 @@ static gint init_tpncp_data_fields_info(tpncp_data_field_info *data_fields_info,
}
current_tpncp_data_field_info->tpncp_data_field_descr = -1;
hf_entr.p_id = &current_tpncp_data_field_info->tpncp_data_field_descr;
- current_tpncp_data_field_info->tpncp_data_field_name = g_strdup_printf("tpncp.%s", tpncp_data_field_name);
+ current_tpncp_data_field_info->tpncp_data_field_name = g_strdup_printf("tpncp.%s", tpncp_data_field_name);
hf_entr.hfinfo.name = current_tpncp_data_field_info->tpncp_data_field_name;
hf_entr.hfinfo.abbrev = current_tpncp_data_field_info->tpncp_data_field_name;
switch (tpncp_data_field_size) {
@@ -735,25 +735,30 @@ static gint init_tpncp_db(void) {
return (-1);
}
+ g_free(tpncp_dat_file_path);
+
ret = fill_tpncp_id_vals(tpncp_events_id_vals, file);
- if (ret != 0) return ret;
+ if (ret != 0)
+ goto done;
ret = fill_tpncp_id_vals(tpncp_commands_id_vals, file);
- if (ret != 0) return ret;
+ if (ret != 0)
+ goto done;
ret = fill_enums_id_vals(file);
- if (ret != 0) return ret;
+ if (ret != 0)
+ goto done;
ret = init_tpncp_data_fields_info(tpncp_events_info_db, file);
- if (ret != 0) return ret;
+ if (ret != 0)
+ goto done;
ret = init_tpncp_data_fields_info(tpncp_commands_info_db, file);
- if (ret != 0) return ret;
- g_free(tpncp_dat_file_path);
+done:
fclose(file);
- return 0;
+ return ret;
}
/*-------------------------------------------------------------------------------------------------------------------------------------------*/
@@ -768,7 +773,7 @@ void proto_reg_handoff_tpncp(void) {
* hf_ entry).
*/
if (proto_tpncp == -1)
- return;
+ return;
if (!tpncp_prefs_initialized) {
tpncp_tcp_handle = new_create_dissector_handle(dissect_tpncp_tcp, proto_tpncp);