* [gentoo-commits] repo/gentoo:master commit in: app-crypt/gpa/, app-crypt/gpa/files/, app-crypt/gpa/files/0.11.0/
@ 2025-08-11 8:37 Sam James
0 siblings, 0 replies; only message in thread
From: Sam James @ 2025-08-11 8:37 UTC (permalink / raw
To: gentoo-commits
commit: 700385f127e76361a98b54f4f8e23583e11f7b8a
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 11 08:25:25 2025 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 11 08:37:12 2025 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=700385f1
app-crypt/gpa: fix UB causing crashes; fix build w/ gpgme-2
Closes: https://bugs.gentoo.org/957196
Closes: https://bugs.gentoo.org/961312
Signed-off-by: Sam James <sam <AT> gentoo.org>
...plicit-declaration-of-gpa_keytable_ensure.patch | 20 +++++
...t_item-stuff-to-make-it-build-with-gpgme-.patch | 97 ++++++++++++++++++++++
.../0003-Fix-incorrect-callback-arguments.patch | 69 +++++++++++++++
app-crypt/gpa/files/gpa-0.11.0-c99.patch | 17 ----
.../{gpa-0.11.0.ebuild => gpa-0.11.0-r1.ebuild} | 3 +-
5 files changed, 188 insertions(+), 18 deletions(-)
diff --git a/app-crypt/gpa/files/0.11.0/0001-Fix-implicit-declaration-of-gpa_keytable_ensure.patch b/app-crypt/gpa/files/0.11.0/0001-Fix-implicit-declaration-of-gpa_keytable_ensure.patch
new file mode 100644
index 000000000000..279632956c8b
--- /dev/null
+++ b/app-crypt/gpa/files/0.11.0/0001-Fix-implicit-declaration-of-gpa_keytable_ensure.patch
@@ -0,0 +1,20 @@
+From aa63712b18b79b983e3d9cd7ce5105d0ec7ac262 Mon Sep 17 00:00:00 2001
+Message-ID: <aa63712b18b79b983e3d9cd7ce5105d0ec7ac262.1754900600.git.sam@gentoo.org>
+From: Andreas Stieger <Andreas.Stieger@gmx.de>
+Date: Fri, 18 Jul 2025 09:39:50 +0200
+Subject: [PATCH 1/3] Fix implicit declaration of gpa_keytable_ensure
+
+* src/cm-piv.c: Fix implicit declaration of gpa_keytable_ensure.
+--- a/src/cm-piv.c
++++ b/src/cm-piv.c
+@@ -41,6 +41,7 @@
+ #include "gtktools.h"
+ #include "convert.h"
+ #include "gpa-key-details.h"
++#include "keytable.h"
+
+ #include "cm-object.h"
+ #include "cm-piv.h"
+--
+2.50.1
+
diff --git a/app-crypt/gpa/files/0.11.0/0002-Remove-trust_item-stuff-to-make-it-build-with-gpgme-.patch b/app-crypt/gpa/files/0.11.0/0002-Remove-trust_item-stuff-to-make-it-build-with-gpgme-.patch
new file mode 100644
index 000000000000..b5cf7e1b849c
--- /dev/null
+++ b/app-crypt/gpa/files/0.11.0/0002-Remove-trust_item-stuff-to-make-it-build-with-gpgme-.patch
@@ -0,0 +1,97 @@
+From b6ba8bcc6db7765667cd6c49b7edc9a2073bc74f Mon Sep 17 00:00:00 2001
+Message-ID: <b6ba8bcc6db7765667cd6c49b7edc9a2073bc74f.1754900600.git.sam@gentoo.org>
+In-Reply-To: <aa63712b18b79b983e3d9cd7ce5105d0ec7ac262.1754900600.git.sam@gentoo.org>
+References: <aa63712b18b79b983e3d9cd7ce5105d0ec7ac262.1754900600.git.sam@gentoo.org>
+From: Werner Koch <wk@gnupg.org>
+Date: Fri, 18 Jul 2025 09:45:23 +0200
+Subject: [PATCH 2/3] Remove trust_item stuff to make it build with gpgme 2.x
+
+* src/gpacontext.h (struct _GpaContextClass): Remove next_trust_item.
+* src/gpacontext.c (NEXT_TRUST_ITEM): Remove
+(gpa_context_class_init): Remove assignment.
+(gpa_context_event_cb): Remove handler.
+(gpa_context_next_trust_item): Remove.
+--
+
+Note that the trust item feature worked only for a very short period
+in 2003.
+--- a/src/gpacontext.c
++++ b/src/gpacontext.c
+@@ -38,8 +38,6 @@ static void gpa_context_finalize (GObject *object);
+ static void gpa_context_start (GpaContext *context);
+ static void gpa_context_done (GpaContext *context, gpg_error_t err);
+ static void gpa_context_next_key (GpaContext *context, gpgme_key_t key);
+-static void gpa_context_next_trust_item (GpaContext *context,
+- gpgme_trust_item_t item);
+ static void gpa_context_progress (GpaContext *context, int current, int total);
+
+ /* The GPGME I/O callbacks */
+@@ -65,7 +63,6 @@ enum
+ START,
+ DONE,
+ NEXT_KEY,
+- NEXT_TRUST_ITEM,
+ PROGRESS,
+ LAST_SIGNAL
+ };
+@@ -113,7 +110,6 @@ gpa_context_class_init (GpaContextClass *klass)
+ klass->start = gpa_context_start;
+ klass->done = gpa_context_done;
+ klass->next_key = gpa_context_next_key;
+- klass->next_trust_item = gpa_context_next_trust_item;
+ klass->progress = gpa_context_progress;
+
+ /* Signals */
+@@ -143,15 +139,6 @@ gpa_context_class_init (GpaContextClass *klass)
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+- signals[NEXT_TRUST_ITEM] =
+- g_signal_new ("next_trust_item",
+- G_TYPE_FROM_CLASS (object_class),
+- G_SIGNAL_RUN_FIRST,
+- G_STRUCT_OFFSET (GpaContextClass, next_trust_item),
+- NULL, NULL,
+- g_cclosure_marshal_VOID__POINTER,
+- G_TYPE_NONE, 1,
+- G_TYPE_POINTER);
+ signals[PROGRESS] =
+ g_signal_new ("progress",
+ G_TYPE_FROM_CLASS (object_class),
+@@ -496,10 +483,6 @@ gpa_context_event_cb (void *data, gpgme_event_io_t type, void *type_data)
+ case GPGME_EVENT_NEXT_KEY:
+ g_signal_emit (context, signals[NEXT_KEY], 0, type_data);
+ break;
+- case GPGME_EVENT_NEXT_TRUSTITEM:
+- g_signal_emit (context, signals[NEXT_TRUST_ITEM], 0,
+- type_data);
+- break;
+ default:
+ /* Ignore unsupported event types */
+ break;
+@@ -531,12 +514,6 @@ gpa_context_next_key (GpaContext *context, gpgme_key_t key)
+ /* Do nothing yet */
+ }
+
+-static void
+-gpa_context_next_trust_item (GpaContext *context, gpgme_trust_item_t item)
+-{
+- /* Do nothing yet */
+-}
+-
+ static void
+ gpa_context_progress (GpaContext *context, int current, int total)
+ {
+--- a/src/gpacontext.h
++++ b/src/gpacontext.h
+@@ -63,7 +63,6 @@ struct _GpaContextClass {
+ void (*start) (GpaContext *context);
+ void (*done) (GpaContext *context, gpg_error_t err);
+ void (*next_key) (GpaContext *context, gpgme_key_t key);
+- void (*next_trust_item) (GpaContext *context, gpgme_trust_item_t item);
+ void (*progress) (GpaContext *context, int current, int total);
+ };
+
+--
+2.50.1
+
diff --git a/app-crypt/gpa/files/0.11.0/0003-Fix-incorrect-callback-arguments.patch b/app-crypt/gpa/files/0.11.0/0003-Fix-incorrect-callback-arguments.patch
new file mode 100644
index 000000000000..a8ba179a8a0b
--- /dev/null
+++ b/app-crypt/gpa/files/0.11.0/0003-Fix-incorrect-callback-arguments.patch
@@ -0,0 +1,69 @@
+From 1bce45d716ba687e794421db6ff061673d204e9d Mon Sep 17 00:00:00 2001
+Message-ID: <1bce45d716ba687e794421db6ff061673d204e9d.1754900600.git.sam@gentoo.org>
+In-Reply-To: <aa63712b18b79b983e3d9cd7ce5105d0ec7ac262.1754900600.git.sam@gentoo.org>
+References: <aa63712b18b79b983e3d9cd7ce5105d0ec7ac262.1754900600.git.sam@gentoo.org>
+From: Sam James <sam@gentoo.org>
+Date: Sun, 10 Aug 2025 03:31:47 +0100
+Subject: [PATCH 3/3] Fix incorrect callback arguments
+
+Some users reported a crash downstream in Gentoo with g_type_check_is_value_type
+getting a garbage type. This turns out to be because
+95e07080a2a08196cafb05b69345ea1d629424b1 replaced the types (and argument
+counts) incorrectly.
+
+Fix that by adding to gpa_marshal.list to create custom marshal types
+and use those instead, and fix the argument count.
+
+Bug: https://bugs.gentoo.org/957196
+Fixes: 95e07080a2a08196cafb05b69345ea1d629424b1
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/src/gpa-marshal.list
++++ b/src/gpa-marshal.list
+@@ -1 +1,3 @@
+ INT:STRING,STRING
++VOID:INT,INT
++VOID:POINTER,POINTER
+--- a/src/gpacontext.c
++++ b/src/gpacontext.c
+@@ -25,6 +25,7 @@
+ #include "gpa.h"
+ #include "gpgmetools.h"
+ #include "gpacontext.h"
++#include "gpa-marshal.h"
+
+ /* GObject type functions */
+
+@@ -145,9 +146,9 @@ gpa_context_class_init (GpaContextClass *klass)
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GpaContextClass, progress),
+ NULL, NULL,
+- g_cclosure_marshal_VOID__INT,
++ gpa_marshal_VOID__INT_INT,
+ G_TYPE_NONE, 2,
+- G_TYPE_INT);
++ G_TYPE_INT, G_TYPE_INT);
+ }
+
+ static void
+--- a/src/gpakeyexpireop.c
++++ b/src/gpakeyexpireop.c
+@@ -31,6 +31,7 @@
+ #endif
+
+ #include "gpa.h"
++#include "gpa-marshal.h"
+ #include "gpakeyexpireop.h"
+ #include "expirydlg.h"
+ #include "gpgmeedit.h"
+@@ -114,7 +115,7 @@ gpa_key_expire_operation_class_init (GpaKeyExpireOperationClass *klass)
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GpaKeyExpireOperationClass, new_expiration),
+ NULL, NULL,
+- g_cclosure_marshal_VOID__POINTER,
++ gpa_marshal_VOID__POINTER_POINTER,
+ G_TYPE_NONE, 2,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+--
+2.50.1
+
diff --git a/app-crypt/gpa/files/gpa-0.11.0-c99.patch b/app-crypt/gpa/files/gpa-0.11.0-c99.patch
deleted file mode 100644
index bc34bc95bbbe..000000000000
--- a/app-crypt/gpa/files/gpa-0.11.0-c99.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-cm-piv.c: In function ‘reload_data’:
-cm-piv.c:510:7: error: implicit declaration of function ‘gpa_keytable_ensure’ [-Wimplicit-function-declaration]
- 510 | gpa_keytable_ensure (gpa_keytable_get_secret_instance());
- | ^~~~~~~~~~~~~~~~~~~
-cm-piv.c:510:28: error: implicit declaration of function ‘gpa_keytable_get_secret_instance’ [-Wimplicit-function-declaration]
- 510 | gpa_keytable_ensure (gpa_keytable_get_secret_instance());
- | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---- a/src/cm-piv.c
-+++ b/src/cm-piv.c
-@@ -41,6 +41,7 @@
- #include "gtktools.h"
- #include "convert.h"
- #include "gpa-key-details.h"
-+#include "keytable.h"
-
- #include "cm-object.h"
- #include "cm-piv.h"
diff --git a/app-crypt/gpa/gpa-0.11.0.ebuild b/app-crypt/gpa/gpa-0.11.0-r1.ebuild
similarity index 94%
rename from app-crypt/gpa/gpa-0.11.0.ebuild
rename to app-crypt/gpa/gpa-0.11.0-r1.ebuild
index b72f07a6dcaa..c327b2e57f0a 100644
--- a/app-crypt/gpa/gpa-0.11.0.ebuild
+++ b/app-crypt/gpa/gpa-0.11.0-r1.ebuild
@@ -28,7 +28,8 @@ BDEPEND="
"
PATCHES=(
- "${FILESDIR}"/${PN}-0.11.0-c99.patch
+ # Backports, drop on bump
+ "${FILESDIR}"/${PV}
)
src_prepare() {
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2025-08-11 8:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-11 8:37 [gentoo-commits] repo/gentoo:master commit in: app-crypt/gpa/, app-crypt/gpa/files/, app-crypt/gpa/files/0.11.0/ Sam James
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox