Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Apr 2021 22:49:55 GMT
From:      Adriaan de Groot <adridg@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org
Subject:   git: d7bd94998c03 - 2021Q2 - graphics/spectacle: avoid crash with export-plugins
Message-ID:  <202104202249.13KMnt6I090978@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch 2021Q2 has been updated by adridg:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d7bd94998c03f8c14d58b4f462ea8d58a00f5ee6

commit d7bd94998c03f8c14d58b4f462ea8d58a00f5ee6
Author:     Adriaan de Groot <adridg@FreeBSD.org>
AuthorDate: 2021-04-20 14:23:01 +0000
Commit:     Adriaan de Groot <adridg@FreeBSD.org>
CommitDate: 2021-04-20 22:49:35 +0000

    graphics/spectacle: avoid crash with export-plugins
    
    This is upstream MR
            https://invent.kde.org/graphics/spectacle/-/merge_requests/61
    and avoids crashes when clicking almost any entry in the
    *export* menu.
    
    PR:             252313
---
 graphics/spectacle/Makefile                        |  1 +
 ...t-f123cf6b1b67519a1a4e82e69764da9e89716489.diff | 52 ++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git a/graphics/spectacle/Makefile b/graphics/spectacle/Makefile
index 5d091220bf64..d1fb10e3cfa4 100644
--- a/graphics/spectacle/Makefile
+++ b/graphics/spectacle/Makefile
@@ -1,6 +1,7 @@
 
 PORTNAME=	spectacle
 DISTVERSION=	${KDE_APPLICATIONS_VERSION}
+PORTREVISION=	1
 CATEGORIES=	graphics kde kde-applications
 
 MAINTAINER=	kde@FreeBSD.org
diff --git a/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff b/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff
new file mode 100644
index 000000000000..379a3e90b1ed
--- /dev/null
+++ b/graphics/spectacle/files/patch-git-f123cf6b1b67519a1a4e82e69764da9e89716489.diff
@@ -0,0 +1,52 @@
+commit f123cf6b1b67519a1a4e82e69764da9e89716489
+Author: Adriaan de Groot <groot@kde.org>
+Date:   Tue Apr 20 14:28:33 2021 +0200
+
+    Fix crash in all(?) KIPI export plugins
+    
+    Scenario:
+    - start spectacle, take a screenshot, click *export* drop-down
+      and pick *imageshack* or *remote storage* (or most of the
+      others)
+    - spectacle crashes
+    
+    Valgrind:
+    ==60783== Invalid read of size 8
+    ==60783==    at 0x48A149A: KIPI::PluginLoader::interface() const (invent/libkipi/src/pluginloader.cpp:385)
+    ==60783==    by 0x14DB111A: KIPIRemoteStoragePlugin::Plugin_RemoteStorage::slotActivateExport() (invent/kipi-plugins/remotestorage/plugin_remotestorage.cpp:122)
+    ==60783==  Address 0xc6d28b0 is 16 bytes inside a block of size 24 free'd
+    ==60783==    at 0x484CBAC: operator delete(void*) (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so)
+    ==60783==    by 0x247CAB: ExportMenu::getKipiItems() (invent/spectacle/src/Gui/ExportMenu.cpp:164)
+diff --git src/Gui/ExportMenu.cpp src/Gui/ExportMenu.cpp
+index 66490dc..92eafa0 100644
+--- src/Gui/ExportMenu.cpp
++++ src/Gui/ExportMenu.cpp
+@@ -120,7 +120,19 @@ void ExportMenu::getKipiItems()
+     mKipiMenu->clear();
+ 
+     mKipiInterface = new KSGKipiInterface(this);
+-    KIPI::PluginLoader *loader = new KIPI::PluginLoader;
++    
++    KIPI::PluginLoader *loader = KIPI::PluginLoader::instance();
++    if (!loader)
++    {
++        // The loader needs to live at least as long as the plugins
++        // loaded through it, since the plugins use the loader's
++        // interface() call to get the KIPI interface they conform to.
++        //
++        // ASAN may complain about a leak here, because this loader
++        // pointer goes out of scope, but it is kept around in
++        // the PluginLoader's static instance()
++        loader = new KIPI::PluginLoader;
++    }
+ 
+     loader->setInterface(mKipiInterface);
+     loader->init();
+@@ -161,7 +173,6 @@ void ExportMenu::getKipiItems()
+     if (mKipiMenu->isEmpty()) {
+         mKipiMenu->addAction(i18n("No KIPI plugins available"))->setEnabled(false);
+     }
+-    delete loader;
+ }
+ #endif
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104202249.13KMnt6I090978>