aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS15
-rw-r--r--agent/divert-scd.c2
-rw-r--r--configure.ac2
-rw-r--r--g10/sign.c11
-rw-r--r--tools/gpgtar-extract.c5
-rw-r--r--tools/gpgtar-list.c10
6 files changed, 34 insertions, 11 deletions
diff --git a/NEWS b/NEWS
index b0e7dff1e..9329b05a8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,19 @@
-Noteworthy changes in version 2.5.11 (unreleased)
+Noteworthy changes in version 2.5.12 (unreleased)
-------------------------------------------------
+ * gpgtar: Fix regression in end-of-archive detection. [T7757]
+
+ Release-info: https://dev.gnupg.org/T7756
+
+
+Noteworthy changes in version 2.5.11 (2025-07-30)
+-------------------------------------------------
+
+ * gpg: Fix a segv in key signing with notations introduced in
+ 2.5.10. [T7754]
+
+ * agent: Fix for smartcard decryption with Brainpool keys. [T7709]
+
Release-info: https://dev.gnupg.org/T7743
diff --git a/agent/divert-scd.c b/agent/divert-scd.c
index e0b5164b5..cd80f09f1 100644
--- a/agent/divert-scd.c
+++ b/agent/divert-scd.c
@@ -518,7 +518,7 @@ agent_card_ecc_kem (ctrl_t ctrl, const unsigned char *ecc_ct,
if (len == ecc_point_len)
memcpy (ecc_ecdh, ecdh, len);
else if (len && (len - 1) * 2 == ecc_point_len - 1
- && (ecdh[0] & ~1) == 0x02)
+ && (ecdh[0] == 0x41 || (ecdh[0] & ~1) == 0x02))
{
/* It's x-coordinate-only (compressed) point representation. */
memcpy (ecc_ecdh, ecdh, len);
diff --git a/configure.ac b/configure.ac
index 023604b8a..eb9a0f1af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,7 +29,7 @@ min_automake_version="1.16.3"
m4_define([mym4_package],[gnupg])
m4_define([mym4_major], [2])
m4_define([mym4_minor], [5])
-m4_define([mym4_micro], [11])
+m4_define([mym4_micro], [12])
# To start a new development series, i.e a new major or minor number
# you need to mark an arbitrary commit before the first beta release
diff --git a/g10/sign.c b/g10/sign.c
index b3bda581c..2ba30f09c 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -125,10 +125,13 @@ mk_notation_policy_etc (ctrl_t ctrl, PKT_signature *sig,
xfree (item->altvalue);
item->altvalue = NULL;
}
- /* Restore the original nd and release ndmanu. */
- nd = ndmanu;
- ndmanu->next = NULL;
- free_notation (ndmanu);
+ if (with_manu)
+ {
+ /* Restore the original nd and release ndmanu. */
+ nd = ndmanu;
+ ndmanu->next = NULL;
+ free_notation (ndmanu);
+ }
}
/* Set policy URL. */
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c
index 5ec22e8f7..d23ccc579 100644
--- a/tools/gpgtar-extract.c
+++ b/tools/gpgtar-extract.c
@@ -492,7 +492,8 @@ gpgtar_extract (const char *filename, int decrypt)
#endif
err = gpgrt_process_spawn (opt.gpg_program, argv,
((filename ? 0 : GPGRT_PROCESS_STDIN_KEEP)
- | GPGRT_PROCESS_STDOUT_PIPE), act, &proc);
+ | GPGRT_PROCESS_STDOUT_PIPE
+ | GPGRT_PROCESS_STDERR_KEEP), act, &proc);
gpgrt_spawn_actions_release (act);
xfree (argv);
if (err)
@@ -525,6 +526,8 @@ gpgtar_extract (const char *filename, int decrypt)
for (;;)
{
err = gpgtar_read_header (stream, tarinfo, &header, &extheader);
+ if (!err && !header)
+ break; /* End of archive. */
if (err || header == NULL)
goto leave;
diff --git a/tools/gpgtar-list.c b/tools/gpgtar-list.c
index 07056575d..9f2eca318 100644
--- a/tools/gpgtar-list.c
+++ b/tools/gpgtar-list.c
@@ -527,7 +527,8 @@ gpgtar_list (const char *filename, int decrypt)
#endif
err = gpgrt_process_spawn (opt.gpg_program, argv,
((filename ? 0 : GPGRT_PROCESS_STDIN_KEEP)
- | GPGRT_PROCESS_STDOUT_PIPE), act, &proc);
+ | GPGRT_PROCESS_STDOUT_PIPE
+ | GPGRT_PROCESS_STDERR_KEEP), act, &proc);
gpgrt_spawn_actions_release (act);
xfree (argv);
if (err)
@@ -559,6 +560,8 @@ gpgtar_list (const char *filename, int decrypt)
for (;;)
{
err = read_header (stream, tarinfo, &header, &extheader);
+ if (!err && !header)
+ break; /* End of archive. */
if (err || header == NULL)
goto leave;
@@ -585,8 +588,9 @@ gpgtar_list (const char *filename, int decrypt)
int exitcode;
gpgrt_process_ctl (proc, GPGRT_PROCESS_GET_EXIT_ID, &exitcode);
- log_error ("running %s failed (exitcode=%d): %s",
- opt.gpg_program, exitcode, gpg_strerror (err));
+ if (exitcode)
+ log_error ("running %s failed (exitcode=%d): %s",
+ opt.gpg_program, exitcode, gpg_strerror (err));
}
gpgrt_process_release (proc);
proc = NULL;