summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2016-09-15 09:08:18 +0200
committerMichael Mann <mmann78@netscape.net>2016-09-16 02:55:07 +0000
commitf674ef75d765a7933774b8659ca20ef0ef16e78d (patch)
tree88096f7ca4c3e6cb52f24df9cd2f1026c36b3935
parent1158576622d677884a3ce4aa169873d453897c9d (diff)
downloadwireshark-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.cpp15
-rw-r--r--ui/qt/iax2_analysis_dialog.h1
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;