capture: Check for valid wtap when capture.show_info

Changing profile during capture may change the capture_opts->show_info
setting. Always init cap_session->wtap and check if valid before doing
capture_info_new_packets(). Always close dialog and cap_session->wtap
in capture_input_closed().

This will not bring up the Capture Information dialog when switching
to a profile having this enabled.

Fixes #17622
This commit is contained in:
Stig Bjørlykke 2021-10-01 10:31:30 +02:00 committed by Wireshark GitLab Utility
parent c7dc907d0e
commit ec2746c910
2 changed files with 8 additions and 7 deletions

View File

@ -153,9 +153,9 @@ capture_start(capture_options *capture_opts, GPtrArray *capture_comments,
wtap_rec_init(&cap_session->rec);
ws_buffer_init(&cap_session->buf, 1514);
if (capture_opts->show_info) {
cap_session->wtap = NULL;
cap_session->wtap = NULL;
if (capture_opts->show_info) {
if (cap_data->counts.counts_hash != NULL)
{
/* Clean up any previous lists of packet counts */
@ -549,7 +549,7 @@ capture_input_new_packets(capture_session *cap_session, int to_read)
capture_callback_invoke(capture_cb_capture_fixed_continue, cap_session);
}
if(capture_opts->show_info)
if(cap_session->wtap)
capture_info_new_packets(to_read, cap_session->wtap, cap_session->cap_data_info);
}
@ -748,10 +748,10 @@ capture_input_closed(capture_session *cap_session, gchar *msg)
}
}
if(capture_opts->show_info) {
capture_info_ui_destroy(&cap_session->cap_data_info->ui);
if(cap_session->wtap)
wtap_close(cap_session->wtap);
capture_info_ui_destroy(&cap_session->cap_data_info->ui);
if(cap_session->wtap) {
wtap_close(cap_session->wtap);
cap_session->wtap = NULL;
}
cap_session->state = CAPTURE_STOPPED;

View File

@ -78,6 +78,7 @@ capture_info *cinfo)
{
CaptureInfoDialog *ci_dlg = qobject_cast<CaptureInfoDialog *>((QObject *)cinfo->ui);
if (!ci_dlg) return;
cinfo->ui = NULL;
delete ci_dlg;
}