wireshark/ui
Peter Wu 31aba351e2 wiretap: fix memleaks with wtap_rec::opt_comment
The memory ownership of wtap_rec::opt_comment was not clear. Users of
wtap were leaking memory (editcap.c). wtap readers were not sure about
freeing old comments (erf) or simply ignored memleaks (pcapng).

To fix this, ensure opt_comment is owned by wtap_rec and free it with
wtap_rec_cleanup. The erf issue was already addressed since
cf_get_packet_comment properly duplicates wth.opt_comment memory.

- wtap file formats (readers):
  - Should allocate memory for new comments.
  - Should free a comment from an earlier read before writing a new one.
- Users of wth:
  - Can only assume that opt_comment remains valid until the next read.
  - Can assume that wtap_dump does not modify the comment.
  - For random access (wtap_seek_read): should call wtap_rec_cleanup
    to free the comment.

The test_tshark_z_expert_comment and test_text2pcap_sip_pcapng tests now
pass when built with ASAN.

This change was created by carefully looking at all users opt
"opt_comment" and cf_get_packet_comment. Thanks to Vasil Velichkov for
an initial patch which helped validating this version.

Bug: 7515
Change-Id: If3152d1391e7e0d9860f04f3bc2ec41a1f6cc54b
Reviewed-on: https://code.wireshark.org/review/31713
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Vasil Velichkov <vvvelichkov@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2019-01-25 04:53:10 +00:00
..
cli No need to report "some files could not be saved". 2019-01-01 23:12:17 +00:00
macosx macOs: Fix build fix for tab view 2018-11-01 15:02:36 +00:00
qt Fix memory ownership when using cf_get_packet_comment 2019-01-25 04:53:01 +00:00
win32 Update the comment again. 2018-12-31 07:50:11 +00:00
CMakeLists.txt CMake: Replace PACKAGELIST magic 2019-01-20 11:50:10 +00:00
alert_box.c ui: add missing break. 2018-11-14 09:30:55 +00:00
alert_box.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
all_files_wildcard.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
capture.c Add interface name when outputting packets dropped. 2018-12-29 08:16:01 +00:00
capture.h UI: Make sure we always have interface statistics. 2018-12-14 18:35:36 +00:00
capture_globals.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
capture_ui_utils.c Put the interface descrptions into the IDB when capturing to pcapng. 2018-08-13 04:37:00 +00:00
capture_ui_utils.h Move get_iface_display_name() to ui/iface_lists.c. 2018-08-13 02:02:59 +00:00
clopts_common.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
clopts_common.h Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
cmdarg_err.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
cmdarg_err.h Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
commandline.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
commandline.h Move more version-info-related stuff to version_info.c. 2018-12-13 03:16:13 +00:00
console.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
console.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
decode_as_utils.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
decode_as_utils.h replace SPDX identifier GPL-2.0+ with GPL-2.0-or-later. 2018-02-08 14:57:36 +00:00
dissect_opts.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
dissect_opts.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
export_object_ui.c Don't fall out of the loop on a write error. 2019-01-02 23:56:33 +00:00
export_object_ui.h No need to report "some files could not be saved". 2019-01-01 23:12:17 +00:00
export_pdu_ui_utils.c Clean up exp_pdu_open() API. 2018-12-19 06:59:09 +00:00
export_pdu_ui_utils.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
failure_message.c Move some command-line-oriented routines from wsutil to ui. 2019-01-01 02:07:06 +00:00
failure_message.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
file_dialog.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
file_dialog.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
filter_files.c Qt: Add back pathLabel in some dialogs 2018-10-10 04:46:28 +00:00
filter_files.h Qt: Add back pathLabel in some dialogs 2018-10-10 04:46:28 +00:00
firewall_rules.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
firewall_rules.h Fix some source headers, reformat SPDX license lines in comment block. 2018-02-18 22:50:37 +00:00
help_url.c UI: Remove Win32 file dialog stuff specific to GTK 2018-11-10 07:42:44 +00:00
help_url.h UI: Remove Win32 file dialog stuff specific to GTK 2018-11-10 07:42:44 +00:00
iface_lists.c Move get_iface_display_name() to ui/iface_lists.c. 2018-08-13 02:02:59 +00:00
iface_lists.h Get rid of unused routine. 2018-08-11 07:52:06 +00:00
iface_toolbar.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
iface_toolbar.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
io_graph_item.c Attempt to squelch a narrowing warning. 2018-09-09 19:55:17 +00:00
io_graph_item.h sharkd: add support for io graph. 2018-05-31 18:43:50 +00:00
language.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
language.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
last_open_dir.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
main_statusbar.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
mcast_stream.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
mcast_stream.h Fix some source headers, reformat SPDX license lines in comment block. 2018-02-18 22:50:37 +00:00
packet_list_utils.c Qt: Enable "Resolve Names" for boolean without TFS 2018-08-22 03:58:16 +00:00
packet_list_utils.h Fix some source headers, reformat SPDX license lines in comment block. 2018-02-18 22:50:37 +00:00
packet_range.c Try to squeeze some bytes out of the frame_data structure. 2018-12-27 04:34:29 +00:00
packet_range.h Qt: fix use-after-free on error while saving exported packets 2018-05-25 12:49:50 +00:00
persfilepath_opt.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
persfilepath_opt.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
preference_utils.c prefs,ui: properly migrate old filter expressions 2018-09-10 09:27:34 +00:00
preference_utils.h prefs,ui: properly migrate old filter expressions 2018-09-10 09:27:34 +00:00
profile.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
profile.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
progress_dlg.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
proto_hier_stats.c Try to squeeze some bytes out of the frame_data structure. 2018-12-27 04:34:29 +00:00
proto_hier_stats.h replace SPDX identifier GPL-2.0+ with GPL-2.0-or-later. 2018-02-08 14:57:36 +00:00
recent.c Avoid warnings about a format string being a variable. 2018-09-10 03:01:35 +00:00
recent.h Remove an unused recent setting. 2018-06-18 22:59:41 +00:00
recent_utils.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
rtp_media.c RTP: Code clean up 2018-06-19 15:05:12 +00:00
rtp_media.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
rtp_stream.c tshark/RTP: GUI dependency removed from register_tap_listener_rtpstream. As consequence of it a few functions were moved from ui/rtp_stream to ui/tap-rtp-common. 2018-06-22 05:35:43 +00:00
rtp_stream.h RTP: If multiple codecs are used in RTP stream flow, all are shown in codecs column 2018-06-28 00:46:39 +00:00
rtp_stream_id.c RTP: Encapsulation of comparsion of two rtpstreams 2018-06-20 08:26:31 +00:00
rtp_stream_id.h RTP: code cleanup 3 2018-06-23 10:03:54 +00:00
service_response_time.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
service_response_time.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
simple_dialog.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
software_update.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
software_update.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
ssl_key_export.c Rename packet-ssl* to packet-tls* 2018-09-25 13:24:17 +00:00
ssl_key_export.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
summary.c Try to squeeze some bytes out of the frame_data structure. 2018-12-27 04:34:29 +00:00
summary.h Use an enum for compression types in various interfaces. 2018-11-16 09:20:36 +00:00
tap-iax2-analysis.c tap-iax2-analysis: fix minor indentation issues. 2018-03-17 21:24:13 +00:00
tap-iax2-analysis.h RTP: Code clean up 2018-06-19 15:05:12 +00:00
tap-rlc-graph.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
tap-rlc-graph.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
tap-rtp-analysis.c Calculate RTP delta time even if clock rate is unknown. 2018-08-21 04:06:27 +00:00
tap-rtp-analysis.h RTP: Code cleanup 2 2018-06-20 13:19:46 +00:00
tap-rtp-common.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
tap-rtp-common.h Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
tap-sctp-analysis.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
tap-sctp-analysis.h Qt: fix several crashes in the SCTP Dialogs 2018-08-20 05:01:11 +00:00
tap-tcp-stream.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
tap-tcp-stream.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
tap_export_pdu.c wiretap: fix memleaks with wtap_rec::opt_comment 2019-01-25 04:53:10 +00:00
tap_export_pdu.h Clean up exp_pdu_open() API. 2018-12-19 06:59:09 +00:00
taps.h replace SPDX identifier GPL-2.0+ with GPL-2.0-or-later. 2018-02-08 14:57:36 +00:00
text_import.c text import: cleanup type usage 2019-01-23 21:17:14 +00:00
text_import.h Text Import: update code comments and help texts 2019-01-21 21:03:49 +00:00
text_import_scanner.h Squelch redundant declaration warnings. 2018-02-16 22:40:26 +00:00
text_import_scanner.l spdx: more licenses converted. 2018-03-07 15:56:44 +00:00
time_shift.c TimeShiftDialog should be considered an "edit" operation 2018-12-21 13:59:32 +00:00
time_shift.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
traffic_table_ui.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
traffic_table_ui.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
util.c Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
util.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00
voip_calls.c Add a "failed" return for tap packet routines. 2019-01-01 05:03:42 +00:00
voip_calls.h RTP: code cleanup 3 2018-06-23 10:03:54 +00:00
ws_ui_util.h Fix comment end after SPDX identifier 2018-05-01 06:56:37 +00:00