diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-09-28 21:40:00 +0200 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2015-09-29 07:18:58 +0000 |
commit | edcbc2485e5648cf23881b3869a1f80d07512660 (patch) | |
tree | 816705b976e07b2a8eadbb4f9eadd7635a83d426 /ui/qt/decode_as_dialog.cpp | |
parent | c65c0149c33771e27d95d22817da3457f18c1094 (diff) | |
download | wireshark-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.cpp | 15 |
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 { |