aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gpgtar-extract.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2025-07-31 08:59:03 +0000
committerWerner Koch <[email protected]>2025-07-31 08:59:03 +0000
commit037e47981374fc72ea76b9b71e150b4786cc3ca6 (patch)
treeec43ec3b4c70325cb86425953ab255619967c9db /tools/gpgtar-extract.c
parentPost release updates (diff)
downloadgnupg-037e47981374fc72ea76b9b71e150b4786cc3ca6.tar.gz
gnupg-037e47981374fc72ea76b9b71e150b4786cc3ca6.zip
gpgtar: Fix regression in end-of-archive detection.
* tools/gpgtar-extract.c (gpgtar_extract): Detect end-of-archive and break loop. * tools/gpgtar-list.c (gpgtar_list): Ditto. Also do not print "running failed" if the exitcode is 0. -- GnuPG-bug-id: 7757 In the old code (gnupg 2.4) we did not call gnupg_release_process when cleaning up the gpg process and thus it could keep on running and deliver its output to the status-fd. The new code does a gnupg_release_process which sends a SIGTERM to a not yet terminated process and thus the output was cut off.
Diffstat (limited to 'tools/gpgtar-extract.c')
-rw-r--r--tools/gpgtar-extract.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c
index 5ec22e8f7..55a517220 100644
--- a/tools/gpgtar-extract.c
+++ b/tools/gpgtar-extract.c
@@ -525,6 +525,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;