1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

Fix key management in security/kleopatra

This was reported upstream also as
	https://bugs.kde.org/show_bug.cgi?id=415168
there has been a patch languishing there for a long time, which I've
now (re)submitted upstream. It fixes all of the reported problem:
a previous patch by me in FreeBSD ports only dealt with half of them.

PR:		242670
Submitted by:	Andre Heinecke
Reported by:	Gerhard Seibert
This commit is contained in:
Adriaan de Groot 2021-01-13 14:02:08 +00:00
parent f26b249c17
commit 63ddfd1197
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=561468
4 changed files with 100 additions and 47 deletions

View File

@ -2,6 +2,7 @@
PORTNAME= kleopatra
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
PORTREVISION= 1
CATEGORIES= security kde kde-applications
MAINTAINER= kde@FreeBSD.org

View File

@ -1,47 +0,0 @@
Submitted upstream as D26393, see also
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242670
https://bugs.kde.org/show_bug.cgi?id=415168
diff --git src/commands/command_p.h src/commands/command_p.h
index d9acbaae..0a16161e 100644
--- src/commands/command_p.h
+++ src/commands/command_p.h
@@ -37,6 +37,7 @@
#include "view/keylistcontroller.h"
#include <Libkleo/KeyListModel>
+#include <Libkleo/KeyRearrangeColumnsProxyModel>
#include <KMessageBox>
@@ -73,7 +74,7 @@ public:
}
KeyListModelInterface *model() const
{
- return view_ ? dynamic_cast<KeyListModelInterface *>(view_->model()) : nullptr;
+ return view_ ? dynamic_cast<KeyListModelInterface *>(dynamic_cast<KeyRearrangeColumnsProxyModel*>(view_->model())) : nullptr;
}
KeyListController *controller() const
{
diff --git src/dialogs/lookupcertificatesdialog.cpp src/dialogs/lookupcertificatesdialog.cpp
index 4f7b0246..313c4f9f 100644
--- src/dialogs/lookupcertificatesdialog.cpp
+++ src/dialogs/lookupcertificatesdialog.cpp
@@ -37,6 +37,8 @@
#include "ui_lookupcertificatesdialog.h"
#include <Libkleo/KeyListModel>
+#include <Libkleo/KeyRearrangeColumnsProxyModel>
+
#include <KConfigGroup>
#include <gpgme++/key.h>
@@ -99,7 +101,7 @@ private:
if (!view) {
return std::vector<Key>();
}
- const auto *const model = dynamic_cast<KeyListModelInterface*>(view->model());
+ const auto *const model = dynamic_cast<KeyListModelInterface*>(dynamic_cast<KeyRearrangeColumnsProxyModel*>(view->model()));
Q_ASSERT(model);
const QItemSelectionModel *const sm = view->selectionModel();
Q_ASSERT(sm);

View File

@ -2,6 +2,7 @@
PORTNAME= libkleo
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
PORTREVISION= 1
CATEGORIES= security kde kde-applications
MAINTAINER= kde@FreeBSD.org

View File

@ -0,0 +1,98 @@
From 54ef30823adb3d4c9b6c66494142980f5cc9e35b Mon Sep 17 00:00:00 2001
From: Andre Heinecke <aheinecke@gnupg.org>
Date: Wed, 12 Feb 2020 12:11:32 +0100
Subject: [PATCH] De inline keylistmodelinterface virtual dtor
This attempts to fix a crash on FreeBSD. See: D26393 for
more info.
BUG: 415168
---
src/CMakeLists.txt | 1 +
src/models/keylistmodelinterface.cpp | 35 ++++++++++++++++++++++++++++
src/models/keylistmodelinterface.h | 6 +++--
3 files changed, 40 insertions(+), 2 deletions(-)
create mode 100644 src/models/keylistmodelinterface.cpp
diff --git src/CMakeLists.txt src/CMakeLists.txt
index dc30079..056d33b 100644
--- src/CMakeLists.txt
+++ src/CMakeLists.txt
@@ -29,6 +29,7 @@ set(libkleo_core_SRCS
kleo/keyresolver.cpp
models/keycache.cpp
models/keylistmodel.cpp
+ models/keylistmodelinterface.cpp
models/keylistsortfilterproxymodel.cpp
models/keyrearrangecolumnsproxymodel.cpp
models/subkeylistmodel.cpp
diff --git src/models/keylistmodelinterface.cpp src/models/keylistmodelinterface.cpp
new file mode 100644
index 0000000..77fc1e2
--- /dev/null
+++ src/models/keylistmodelinterface.cpp
@@ -0,0 +1,35 @@
+/* -*- mode: c++; c-basic-offset:4 -*-
+ models/keylistmodelinterface.cpp
+
+ Copyright (c) 2020 g10 Code GmbH
+
+ Kleopatra is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Kleopatra is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#include "keylistmodelinterface.h"
+
+Kleo::KeyListModelInterface::~KeyListModelInterface()
+{
+}
diff --git src/models/keylistmodelinterface.h src/models/keylistmodelinterface.h
index 3090017..4de3fec 100644
--- src/models/keylistmodelinterface.h
+++ src/models/keylistmodelinterface.h
@@ -35,6 +35,8 @@
#include <vector>
+#include <kleo_export.h>
+
namespace GpgME
{
class Key;
@@ -46,10 +48,10 @@ template <typename T> class QList;
namespace Kleo
{
-class KeyListModelInterface
+class KLEO_EXPORT KeyListModelInterface
{
public:
- virtual ~KeyListModelInterface() {}
+ virtual ~KeyListModelInterface();
static const int FingerprintRole = 0xF1;
static const int KeyRole = 0xF2;
--
2.20.1