--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: gnu...@packages.debian.org, gnu...@packages.debian.org
Control: affects -1 + src:gnupg2
User: release.debian....@packages.debian.org
Usertags: unblock
Please unblock package gnupg2
This fixes another regression from the CVE-2025-30258 fix and
cherry-picks multiple fixes from upstream's maintenance branch
STABLE-BRANCH-2-4 which were included in 2.4.8.
unblock gnupg2/2.4.7-19
We have another fix pending (#1106800) I have just uploaded to
experimental to avoid restting the propagation timer.
cu Andreas
--
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'
diff --git a/debian/changelog b/debian/changelog
index fe466a495..1b24c466d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,31 @@
+gnupg2 (2.4.7-19) unstable; urgency=medium
+
+ * Upload to unstable.
+
+ -- Andreas Metzler <ametz...@debian.org> Wed, 14 May 2025 06:22:05 +0200
+
+gnupg2 (2.4.7-18) experimental; urgency=medium
+
+ [ Daniel Kahn Gillmor ]
+ * Handle certification-only pubkeys correctly (Closes: #1101007)
+
+ [ Andreas Metzler ]
+ * Cherry-pick fixes from upstream STABLE-BRANCH-2-4:
+ + Fix key generation with existing key from card.
+ (2.4.7 regression) https://dev.gnupg.org/T7457
+ + gpgconf: Fix reload and kill of keyboxd
+ https://dev.gnupg.org/T7569
+ + keyboxd: Convert upper-case email-address search string to lower-case
+ https://dev.gnupg.org/T7576
+ + Fix use of undefined behavior in ksba-io-support.c
+ (Use memchr since calling strchr on a non-NUL terminated string is
+ undefined behavior.)
+ + Fix --list-filter select='disabled-f'.
+
+ -- Andreas Metzler <ametz...@debian.org> Sun, 11 May 2025 13:04:10 +0200
+
gnupg2 (2.4.7-17) unstable; urgency=medium
* re-enable piuparts in salsa-ci, keyboxd package is no more.
* disable missing-breaks salsa ci. (fp: gpg-from-sq)
* Add pkg.gnupg2.gpgvonly build profile. (Thanks, Helmut Grohne)
diff --git a/debian/patches/from-upstream/0001-gpg-Fix-key-generation-with-existing-key-from-card.patch b/debian/patches/from-upstream/0001-gpg-Fix-key-generation-with-existing-key-from-card.patch
new file mode 100644
index 000000000..3a4a7f2ae
--- /dev/null
+++ b/debian/patches/from-upstream/0001-gpg-Fix-key-generation-with-existing-key-from-card.patch
@@ -0,0 +1,30 @@
+From: NIIBE Yutaka <gni...@fsij.org>
+Date: Mon, 16 Dec 2024 09:56:24 +0900
+Subject: [PATCH 01/10] gpg: Fix key generation with existing key from card.
+
+* g10/keygen.c (ask_algo): Fix condition. Continue the loop when
+failure.
+
+--
+
+Fixes-commit: 6022f10da39e512b5b3fed3869fd6579d954090c
+GnuPG-bug-id: 7309, 7457
+Signed-off-by: NIIBE Yutaka <gni...@fsij.org>
+(cherry picked from commit cc3efe9a7312b1ca2c2398e439178e0b23e857df)
+---
+ g10/keygen.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/g10/keygen.c b/g10/keygen.c
+index 9b689a9..b301db9 100644
+--- a/g10/keygen.c
++++ b/g10/keygen.c
+@@ -2483,7 +2483,7 @@ ask_algo (ctrl_t ctrl, int addmode, int *r_subkey_algo, unsigned int *r_usage,
+ if (!keyref)
+ continue;
+
+- if (!agent_scd_readkey (ctrl, keyref, &s_pkey, NULL))
++ if (agent_scd_readkey (ctrl, keyref, &s_pkey, NULL))
+ continue;
+
+ algostr = pubkey_algo_string (s_pkey, &algoid);
diff --git a/debian/patches/from-upstream/0002-gpgconf-Fix-reload-and-kill-of-keyboxd.patch b/debian/patches/from-upstream/0002-gpgconf-Fix-reload-and-kill-of-keyboxd.patch
new file mode 100644
index 000000000..b71c90275
--- /dev/null
+++ b/debian/patches/from-upstream/0002-gpgconf-Fix-reload-and-kill-of-keyboxd.patch
@@ -0,0 +1,38 @@
+From: Werner Koch <w...@gnupg.org>
+Date: Mon, 17 Mar 2025 10:06:54 +0100
+Subject: [PATCH 02/10] gpgconf: Fix reload and kill of keyboxd.
+
+* tools/gpgconf-comp.c (keyboxd_runtime_change): Fix order of args.
+--
+
+Fixes-commit: acaeba2dbdb9bbd68a823c671d5c3577fef5d26d
+GnuPG-bug-id: 7569
+(cherry picked from commit e212308ede8ecaa3a39ed0366db70da3edfc0ba2)
+---
+ tools/gpgconf-comp.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c
+index fb2a896..f9856ea 100644
+--- a/tools/gpgconf-comp.c
++++ b/tools/gpgconf-comp.c
+@@ -909,15 +909,15 @@ keyboxd_runtime_change (int killflag)
+ int cmdidx;
+
+ pgmname = gnupg_module_name (GNUPG_MODULE_NAME_CONNECT_AGENT);
+- argv[i++] = "--no-autostart";
+- argv[i++] = "--keyboxd";
+- cmdidx = i;
+- argv[i++] = killflag? "KILLKEYBOXD" : "RELOADKEYBOXD";
+ if (!gnupg_default_homedir_p ())
+ {
+ argv[i++] = "--homedir";
+ argv[i++] = gnupg_homedir ();
+ }
++ argv[i++] = "--no-autostart";
++ argv[i++] = "--keyboxd";
++ cmdidx = i;
++ argv[i++] = killflag? "KILLKEYBOXD" : "RELOADKEYBOXD";
+ argv[i] = NULL;
+ log_assert (i < DIM(argv));
+
diff --git a/debian/patches/from-upstream/0006-keyboxd-Searching-UpperCaseAddress.patch b/debian/patches/from-upstream/0006-keyboxd-Searching-UpperCaseAddress.patch
new file mode 100644
index 000000000..12100d960
--- /dev/null
+++ b/debian/patches/from-upstream/0006-keyboxd-Searching-UpperCaseAddress.patch
@@ -0,0 +1,67 @@
+From: NIIBE Yutaka <gni...@fsij.org>
+Date: Wed, 26 Mar 2025 14:26:54 +0900
+Subject: [PATCH 06/10] keyboxd: Searching UpperCaseAddress.
+
+* kbx/backend-sqlite.c (run_select_statement): Convert with
+ascii_strlwr when the mode is KEYDB_SEARCH_MODE_MAIL.
+
+--
+
+GnuPG-bug-id: 7576
+Signed-off-by: NIIBE Yutaka <gni...@fsij.org>
+(cherry picked from commit 0812ab2996730eecc180dceab5e7a7f0a706c467)
+---
+ kbx/backend-sqlite.c | 38 ++++++++++++++++++++++++++++----------
+ 1 file changed, 28 insertions(+), 10 deletions(-)
+
+diff --git a/kbx/backend-sqlite.c b/kbx/backend-sqlite.c
+index 50ab6f0..57613e2 100644
+--- a/kbx/backend-sqlite.c
++++ b/kbx/backend-sqlite.c
+@@ -956,18 +956,36 @@ run_select_statement (ctrl_t ctrl, be_sqlite_local_t ctx,
+ extra, " ORDER BY p.ubid", &ctx->select_stmt);
+ if (!err)
+ {
+- s = desc[descidx].u.name;
+- if (s && *s == '<' && s[1])
+- { /* It is common that the indicator for exact addrspec
+- * search has not been removed. We do this here. */
+- s++;
+- n = strlen (s);
+- if (n > 1 && s[n-1] == '>')
+- n--;
++ if (desc[descidx].mode == KEYDB_SEARCH_MODE_MAIL)
++ {
++ char *mail = xtrystrdup (desc[descidx].u.name);
++
++ if (!mail)
++ err = gpg_error_from_syserror ();
++ else
++ {
++ ascii_strlwr (mail);
++ s = mail;
++ if (*s == '<' && s[1])
++ { /* It is common that the indicator for exact addrspec
++ * search has not been removed. We do this here. */
++ s++;
++ n = strlen (s);
++ if (n > 1 && s[n-1] == '>')
++ n--;
++ }
++ else
++ n = strlen (s);
++ err = run_sql_bind_ntext (ctx->select_stmt, 1, s, n);
++ xfree (mail);
++ }
+ }
+ else
+- n = s? strlen (s):0;
+- err = run_sql_bind_ntext (ctx->select_stmt, 1, s, n);
++ {
++ s = desc[descidx].u.name;
++ n = s? strlen (s):0;
++ err = run_sql_bind_ntext (ctx->select_stmt, 1, s, n);
++ }
+ }
+ break;
+
diff --git a/debian/patches/from-upstream/0007-Fix-access-to-the-bintoasc-mapping-in-the-libksba-su.patch b/debian/patches/from-upstream/0007-Fix-access-to-the-bintoasc-mapping-in-the-libksba-su.patch
new file mode 100644
index 000000000..686815bc4
--- /dev/null
+++ b/debian/patches/from-upstream/0007-Fix-access-to-the-bintoasc-mapping-in-the-libksba-su.patch
@@ -0,0 +1,33 @@
+From: Collin Funk <collin.fu...@gmail.com>
+Date: Wed, 30 Apr 2025 10:36:18 +0200
+Subject: [PATCH 07/10] Fix access to the bintoasc mapping in the libksba
+ support.
+
+* common/ksba-io-support.c (has_only_base64): Use memchr since calling
+strchr on a non-NUL terminated string is undefined behavior.
+
+--
+
+Signed-off-by: Collin Funk <collin.fu...@gmail.com>
+
+This patch has been stripped from Colin's original patch because this
+is not just about a warning but an actual bug. That bug was
+introduced in 2003 by me. - wk
+(cherry picked from commit 33d418fd34b55bdd30b0dc1a4ab2fe41cc6d2170)
+---
+ common/ksba-io-support.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/common/ksba-io-support.c b/common/ksba-io-support.c
+index 352485f..ff5e495 100644
+--- a/common/ksba-io-support.c
++++ b/common/ksba-io-support.c
+@@ -174,7 +174,7 @@ has_only_base64 (const unsigned char *line, int linelen)
+ {
+ if (*line == '\n' || (linelen > 1 && *line == '\r' && line[1] == '\n'))
+ break;
+- if ( !strchr (bintoasc, *line) )
++ if ( !memchr (bintoasc, *line, sizeof (bintoasc)) )
+ return 0;
+ }
+ return 1; /* yes */
diff --git a/debian/patches/from-upstream/0009-common-Fix-logic-for-certain-recsel-conditions.patch b/debian/patches/from-upstream/0009-common-Fix-logic-for-certain-recsel-conditions.patch
new file mode 100644
index 000000000..fd7ded3ef
--- /dev/null
+++ b/debian/patches/from-upstream/0009-common-Fix-logic-for-certain-recsel-conditions.patch
@@ -0,0 +1,70 @@
+From: Werner Koch <w...@gnupg.org>
+Date: Wed, 30 Apr 2025 15:13:11 +0200
+Subject: [PATCH 09/10] common: Fix logic for certain recsel conditions.
+
+* common/recsel.c (recsel_select): Change processing of NULL values.
+* common/t-recsel.c (run_test_2): Adjust for this change. Also a type
+fix for s/"letter"/"letters"/.
+--
+
+The getval function may return NULL which indicates that there is no
+useful value available. For example because the propertyname is not
+defined for some external context (e.g. in gpg the packet type). This
+also required to fix the test for boolean tests of a non existing
+property name.
+
+Reported-by: shniubobo at gnupg-users on 2025-04-18.
+(cherry picked from commit 3ea8cab6a40485ff9748a77bca3b26c63a788449)
+---
+ common/recsel.c | 6 +++++-
+ common/t-recsel.c | 6 +++---
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/common/recsel.c b/common/recsel.c
+index fa3deba..3be491c 100644
+--- a/common/recsel.c
++++ b/common/recsel.c
+@@ -506,7 +506,11 @@ recsel_select (recsel_expr_t selector,
+ {
+ value = getval? getval (cookie, se->name) : NULL;
+ if (!value)
+- value = "";
++ {
++ se = se->next;
++ result = 0;
++ continue;
++ }
+
+ if (!*value)
+ {
+diff --git a/common/t-recsel.c b/common/t-recsel.c
+index 2d5a95d..72a2596 100644
+--- a/common/t-recsel.c
++++ b/common/t-recsel.c
+@@ -306,7 +306,7 @@ run_test_2 (void)
+
+ FREEEXPR();
+ ADDEXPR ("nothing -z");
+- if (!recsel_select (se, test_2_getval, NULL))
++ if (recsel_select (se, test_2_getval, NULL))
+ fail (0, 0);
+ FREEEXPR();
+ ADDEXPR ("nothing -n");
+@@ -334,7 +334,7 @@ run_test_2 (void)
+
+ FREEEXPR();
+ ADDEXPR ("nothing -f");
+- if (!recsel_select (se, test_2_getval, NULL))
++ if (recsel_select (se, test_2_getval, NULL))
+ fail (0, 0);
+ FREEEXPR();
+ ADDEXPR ("nothing -t");
+@@ -369,7 +369,7 @@ run_test_2 (void)
+ fail (0, 0);
+
+ FREEEXPR();
+- ADDEXPR ("letter -f");
++ ADDEXPR ("letters -f");
+ if (!recsel_select (se, test_2_getval, NULL))
+ fail (0, 0);
+ FREEEXPR();
diff --git a/debian/patches/from-upstream/gpg-Fix-another-regression-due-to-the-T7547-fix.patch b/debian/patches/from-upstream/gpg-Fix-another-regression-due-to-the-T7547-fix.patch
new file mode 100644
index 000000000..e2c127916
--- /dev/null
+++ b/debian/patches/from-upstream/gpg-Fix-another-regression-due-to-the-T7547-fix.patch
@@ -0,0 +1,45 @@
+From: Werner Koch <w...@gnupg.org>
+Date: Fri, 2 May 2025 11:11:05 +0200
+Subject: gpg: Fix another regression due to the T7547 fix.
+
+* g10/getkey.c (get_pubkey_for_sig): Keep a requested
+PUBKEY_USAGE_CERT.
+(finish_lookup): For correctness in future use cases allow
+PUBKEY_USAGE_CERT to also trigger verify mode.
+--
+
+The case here was that a cert-only primary key was removed with
+export-clean.
+
+GnuPG-bug-id: 7583
+(cherry picked from commit 9b7c067717d815e16f9ea3cec88bca09a6cce7cb)
+---
+ g10/getkey.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/g10/getkey.c b/g10/getkey.c
+index e326406..ae0e002 100644
+--- a/g10/getkey.c
++++ b/g10/getkey.c
+@@ -341,8 +341,10 @@ get_pubkey_for_sig (ctrl_t ctrl, PKT_public_key *pk, PKT_signature *sig,
+ /* Make sure to request only keys cabable of signing. This makes
+ * sure that a subkey w/o a valid backsig or with bad usage flags
+ * will be skipped. We also request the verification mode so that
+- * expired and reoked keys are returned. */
+- pk->req_usage = (PUBKEY_USAGE_SIG | PUBKEY_USAGE_VERIFY);
++ * expired and revoked keys are returned. We keep only a requested
++ * CERT usage in PK for the sake of key signatures. */
++ pk->req_usage = (PUBKEY_USAGE_SIG | PUBKEY_USAGE_VERIFY
++ | (pk->req_usage & PUBKEY_USAGE_CERT));
+
+ /* First try the ISSUER_FPR info. */
+ fpr = issuer_fpr_raw (sig, &fprlen);
+@@ -3736,7 +3738,7 @@ finish_lookup (kbnode_t keyblock, unsigned int req_usage, int want_exact,
+ /* The verify mode is used to change the behaviour so that we can
+ * return an expired or revoked key for signature verification. */
+ verify_mode = ((req_usage & PUBKEY_USAGE_VERIFY)
+- && (req_usage & PUBKEY_USAGE_SIG));
++ && (req_usage & (PUBKEY_USAGE_CERT|PUBKEY_USAGE_SIG)));
+
+ #define USAGE_MASK (PUBKEY_USAGE_SIG|PUBKEY_USAGE_ENC|PUBKEY_USAGE_CERT)
+ req_usage &= USAGE_MASK;
diff --git a/debian/patches/series b/debian/patches/series
index 1c57afc95..cda8c045a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -46,5 +46,11 @@ from-upstream/gpg-Remove-a-signature-check-function-wrapper.patch
from-upstream/gpg-Fix-a-verification-DoS-due-to-a-malicious-subkey-in-t.patch
from-upstream/gpg-Fix-regression-for-the-recent-malicious-subkey-DoS-fi.patch
from-upstream/gpg-Fix-double-free-of-internal-data.patch
debian-packaging/no-keyboxd.patch
gpgv-Avoid-Assuan-and-NPth-dependencies.patch
+from-upstream/0001-gpg-Fix-key-generation-with-existing-key-from-card.patch
+from-upstream/0002-gpgconf-Fix-reload-and-kill-of-keyboxd.patch
+from-upstream/0006-keyboxd-Searching-UpperCaseAddress.patch
+from-upstream/0007-Fix-access-to-the-bintoasc-mapping-in-the-libksba-su.patch
+from-upstream/gpg-Fix-another-regression-due-to-the-T7547-fix.patch
+from-upstream/0009-common-Fix-logic-for-certain-recsel-conditions.patch
signature.asc
Description: PGP signature
--- End Message ---