diff options
author | MichaĆ Skalski <mskalski13@gmail.com> | 2016-08-22 22:21:57 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2016-08-28 16:08:05 +0000 |
commit | 16b7128d1a4b4c80d24d5a10e32a5787727858a9 (patch) | |
tree | 7df290fe04995e6adf0e3034e5ada1c6c2134423 | |
parent | 7da76916790dc85c4a5374254f1705440b1529d7 (diff) |
UAT gtk-ui, Qt-ui: Fixed copying records when no cp callback is defined
According to documentation of uat_copy_cb_t, if uat->copy_cb is NULL,
memcpy() should be used.
This affected IKEv1 and IKEv2 UAT tables (possibly others).
Change-Id: I27ebdc08385d260945699f101e714d3abb288b22
Reviewed-on: https://code.wireshark.org/review/17245
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r-- | ui/gtk/uat_gui.c | 4 | ||||
-rw-r--r-- | ui/qt/uat_dialog.cpp | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/ui/gtk/uat_gui.c b/ui/gtk/uat_gui.c index 3e653a8147..c7d3901341 100644 --- a/ui/gtk/uat_gui.c +++ b/ui/gtk/uat_gui.c @@ -470,6 +470,10 @@ static void uat_edit_dialog(uat_t *uat, gint row, gboolean copy) { if (uat->copy_cb) { uat->copy_cb (dd->rec, UAT_INDEX_PTR(uat, row), uat->record_size); } + else { + /* According to documentation of uat_copy_cb_t memcpy should be used if uat->copy_cb is NULL */ + memcpy(dd->rec, UAT_INDEX_PTR(uat, row), uat->record_size); + } dd->is_new = TRUE; } else if (row >= 0) { dd->rec = UAT_INDEX_PTR(uat, row); diff --git a/ui/qt/uat_dialog.cpp b/ui/qt/uat_dialog.cpp index db64e3f78f..a27b2a7cff 100644 --- a/ui/qt/uat_dialog.cpp +++ b/ui/qt/uat_dialog.cpp @@ -499,11 +499,16 @@ void UatDialog::addRecord(bool copy_from_current) void *rec = g_malloc0(uat_->record_size); - if (copy_from_current && uat_->copy_cb) { + if (copy_from_current) { QTreeWidgetItem *item = ui->uatTreeWidget->currentItem(); if (!item) return; guint row = item->data(0, Qt::UserRole).toUInt(); - uat_->copy_cb(rec, UAT_INDEX_PTR(uat_, row), uat_->record_size); + if (uat_->copy_cb) { + uat_->copy_cb(rec, UAT_INDEX_PTR(uat_, row), uat_->record_size); + } else { + /* According to documentation of uat_copy_cb_t memcpy should be used if uat_->copy_cb is NULL */ + memcpy(rec, UAT_INDEX_PTR(uat_, row), uat_->record_size); + } } else { for (guint col = 0; col < uat_->ncols; col++) { uat_field_t *field = &uat_->fields[col]; |