summaryrefslogtreecommitdiff
path: root/ui/qt/decode_as_dialog.cpp
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-09-28 21:40:00 +0200
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2015-09-29 07:18:58 +0000
commitedcbc2485e5648cf23881b3869a1f80d07512660 (patch)
tree816705b976e07b2a8eadbb4f9eadd7635a83d426 /ui/qt/decode_as_dialog.cpp
parentc65c0149c33771e27d95d22817da3457f18c1094 (diff)
downloadwireshark-edcbc2485e5648cf23881b3869a1f80d07512660.tar.gz
Decode as (Qt): fix dereference of null pointer found by Clang analyzer
Also fix usage of 'Decode As' window when no file is opened (broken by gf189cb8) Change-Id: I06ff83394cf31763cecfbbedd99ce7438488872a Reviewed-on: https://code.wireshark.org/review/10665 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'ui/qt/decode_as_dialog.cpp')
-rw-r--r--ui/qt/decode_as_dialog.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/ui/qt/decode_as_dialog.cpp b/ui/qt/decode_as_dialog.cpp
index 2546b4a638..aef688f7fe 100644
--- a/ui/qt/decode_as_dialog.cpp
+++ b/ui/qt/decode_as_dialog.cpp
@@ -436,12 +436,15 @@ void DecodeAsDialog::tableNamesCurrentIndexChanged(const QString &text)
selector_combo_box_->clear();
+ bool edt_present = cap_file_ && cap_file_->edt;
QVariant variant = table_names_combo_box_->itemData(table_names_combo_box_->currentIndex());
- gint8 curr_layer_num_saved = cap_file_->edt->pi.curr_layer_num;
+ gint8 curr_layer_num_saved = edt_present ? cap_file_->edt->pi.curr_layer_num : 0;
const gchar *proto_name = NULL;
if (variant.canConvert<table_item_t>()) {
table_item_t table_item = variant.value<table_item_t>();
- cap_file_->edt->pi.curr_layer_num = table_item.curr_layer_num;
+ if (edt_present) {
+ cap_file_->edt->pi.curr_layer_num = table_item.curr_layer_num;
+ }
proto_name = table_item.proto_name;
}
@@ -449,9 +452,9 @@ void DecodeAsDialog::tableNamesCurrentIndexChanged(const QString &text)
GList *cur;
for (cur = decode_as_list; cur; cur = cur->next) {
decode_as_t *entry = (decode_as_t *) cur->data;
- if ((g_strcmp0(proto_name, entry->name) == 0) &&
+ if (((proto_name == NULL) || (g_strcmp0(proto_name, entry->name) == 0)) &&
(g_strcmp0(ui_name_to_name_[text], entry->table_name) == 0)) {
- if (cap_file_ && cap_file_->edt) {
+ if (edt_present) {
for (uint ni = 0; ni < entry->num_items; ni++) {
if (entry->values[ni].num_values == 1) { // Skip over multi-value ("both") entries
selector_combo_box_->addItem(entryString(entry->table_name,
@@ -463,7 +466,9 @@ void DecodeAsDialog::tableNamesCurrentIndexChanged(const QString &text)
entry->populate_list(entry->table_name, decodeAddProtocol, &dissector_info_set);
}
}
- cap_file_->edt->pi.curr_layer_num = curr_layer_num_saved;
+ if (edt_present) {
+ cap_file_->edt->pi.curr_layer_num = curr_layer_num_saved;
+ }
if (selector_combo_box_->count() > 0) {
selector_combo_box_->setCurrentIndex(0);
} else {