aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichaƂ Skalski <mskalski13@gmail.com>2016-08-22 22:21:57 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2016-08-28 16:08:05 +0000
commit16b7128d1a4b4c80d24d5a10e32a5787727858a9 (patch)
tree7df290fe04995e6adf0e3034e5ada1c6c2134423
parent7da76916790dc85c4a5374254f1705440b1529d7 (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.c4
-rw-r--r--ui/qt/uat_dialog.cpp9
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];