aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorAdriaan de Groot <adridg@FreeBSD.org>2021-01-13 22:02:08 +0800
committerAdriaan de Groot <adridg@FreeBSD.org>2021-01-13 22:02:08 +0800
commit63ddfd119714d37cecd4c5a7a6fa899798e9f356 (patch)
treec4ea8758278cf9d4acae0d63a11afd408376d0ca /security
parentf26b249c17d1266aed027f5e2299100635656a1b (diff)
downloadfreebsd-ports-gnome-63ddfd119714d37cecd4c5a7a6fa899798e9f356.tar.gz
freebsd-ports-gnome-63ddfd119714d37cecd4c5a7a6fa899798e9f356.tar.zst
freebsd-ports-gnome-63ddfd119714d37cecd4c5a7a6fa899798e9f356.zip
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
Diffstat (limited to 'security')
-rw-r--r--security/kleopatra/Makefile1
-rw-r--r--security/kleopatra/files/patch-D2639347
-rw-r--r--security/libkleo/Makefile1
-rw-r--r--security/libkleo/files/patch-BR41516898
4 files changed, 100 insertions, 47 deletions
diff --git a/security/kleopatra/Makefile b/security/kleopatra/Makefile
index 12844d125a7d..197dedbdd341 100644
--- a/security/kleopatra/Makefile
+++ b/security/kleopatra/Makefile
@@ -2,6 +2,7 @@
PORTNAME= kleopatra
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= security kde kde-applications
MAINTAINER= kde@FreeBSD.org
diff --git a/security/kleopatra/files/patch-D26393 b/security/kleopatra/files/patch-D26393
deleted file mode 100644
index 4d0192ce9e33..000000000000
--- a/security/kleopatra/files/patch-D26393
+++ /dev/null
@@ -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);
diff --git a/security/libkleo/Makefile b/security/libkleo/Makefile
index c1d7a2e4059f..50c8ba281d9d 100644
--- a/security/libkleo/Makefile
+++ b/security/libkleo/Makefile
@@ -2,6 +2,7 @@
PORTNAME= libkleo
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= security kde kde-applications
MAINTAINER= kde@FreeBSD.org
diff --git a/security/libkleo/files/patch-BR415168 b/security/libkleo/files/patch-BR415168
new file mode 100644
index 000000000000..e7e6a10e92b1
--- /dev/null
+++ b/security/libkleo/files/patch-BR415168
@@ -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
+