diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2016-09-15 09:08:18 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-09-16 02:55:07 +0000 |
commit | f674ef75d765a7933774b8659ca20ef0ef16e78d (patch) | |
tree | 88096f7ca4c3e6cb52f24df9cd2f1026c36b3935 | |
parent | 1158576622d677884a3ce4aa169873d453897c9d (diff) | |
download | wireshark-f674ef75d765a7933774b8659ca20ef0ef16e78d.tar.gz |
Qt: Avoid crashes in IAX2 Stream Analysis
Avoid crash when opening IAX2 Stream Analysis without having any
packets and when not having a selected packet. Also disable the
Save Audio options if not having any IAX2 packets.
Also set Close as default button.
Change-Id: I1da04e3f907d9d562fa227ab9f0428aa6097131e
Reviewed-on: https://code.wireshark.org/review/17708
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | ui/qt/iax2_analysis_dialog.cpp | 15 | ||||
-rw-r--r-- | ui/qt/iax2_analysis_dialog.h | 1 |
2 files changed, 14 insertions, 2 deletions
diff --git a/ui/qt/iax2_analysis_dialog.cpp b/ui/qt/iax2_analysis_dialog.cpp index ff1db2713e..cbe36ed4e7 100644 --- a/ui/qt/iax2_analysis_dialog.cpp +++ b/ui/qt/iax2_analysis_dialog.cpp @@ -297,6 +297,11 @@ Iax2AnalysisDialog::Iax2AnalysisDialog(QWidget &parent, CaptureFile &cf) : save_menu->addAction(ui->actionSaveGraph); ui->buttonBox->button(QDialogButtonBox::Save)->setMenu(save_menu); + ui->buttonBox->button(QDialogButtonBox::Close)->setDefault(true); + + resetStatistics(); + updateStatistics(); // Initialize stats if an error occurs + #if 0 /* Only accept Voice or MiniPacket packets */ const gchar filter_text[] = "iax2.call && (ip || ipv6)"; @@ -314,7 +319,12 @@ Iax2AnalysisDialog::Iax2AnalysisDialog(QWidget &parent, CaptureFile &cf) : return; } - if (!cap_file_.capFile() || !cap_file_.capFile()->current_frame) close(); + if (!cap_file_.capFile() || !cap_file_.capFile()->current_frame) { + err_str_ = tr("Please select an IAX2 packet."); + save_payload_error_ = TAP_IAX2_NO_PACKET_SELECTED; + updateWidgets(); + return; + } frame_data *fdata = cap_file_.capFile()->current_frame; @@ -331,7 +341,8 @@ Iax2AnalysisDialog::Iax2AnalysisDialog(QWidget &parent, CaptureFile &cf) : if (!dfilter_apply_edt(sfcode, &edt)) { epan_dissect_cleanup(&edt); dfilter_free(sfcode); - err_str_ = tr("Please select an IAX2 packet"); + err_str_ = tr("Please select an IAX2 packet."); + save_payload_error_ = TAP_IAX2_NO_PACKET_SELECTED; updateWidgets(); return; } diff --git a/ui/qt/iax2_analysis_dialog.h b/ui/qt/iax2_analysis_dialog.h index 0183c387c3..59e1bfad60 100644 --- a/ui/qt/iax2_analysis_dialog.h +++ b/ui/qt/iax2_analysis_dialog.h @@ -49,6 +49,7 @@ class QTemporaryFile; typedef enum { TAP_IAX2_NO_ERROR, + TAP_IAX2_NO_PACKET_SELECTED, TAP_IAX2_WRONG_LENGTH, TAP_IAX2_FILE_IO_ERROR } iax2_error_type_t; |