diff options
-rw-r--r-- | NEWS | 15 | ||||
-rw-r--r-- | agent/divert-scd.c | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | g10/sign.c | 11 | ||||
-rw-r--r-- | tools/gpgtar-extract.c | 5 | ||||
-rw-r--r-- | tools/gpgtar-list.c | 10 |
6 files changed, 34 insertions, 11 deletions
@@ -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; |