Improve error handling when running gpgv
authorJacob Bachmeyer <jcb@gnu.org>
Tue, 15 Nov 2022 04:27:28 +0000 (22:27 -0600)
committerJacob Bachmeyer <jcb@gnu.org>
Tue, 15 Nov 2022 04:27:28 +0000 (22:27 -0600)
This commit harmonizes the exit status used when the child process fails
to exec gpgv with that used by posix_spawn, and ensures that the child
process is reaped when the exec fails.

gatekeeper.pl

index 7afb0e0417bd7638bab7448a70ae607348b12b90..e0a0928029713c55eddae1884edc8cf905712043 100755 (executable)
@@ -914,7 +914,7 @@ sub _spawn_gpgv {
     close $gpgv_status; close $gpgv_flag;
 
     our $AbortPipe = $gpgv_flag_sink;  # pipe to parent
-    our $AbortExitCode = 120;          # arbitrary 7-bit exit code
+    our $AbortExitCode = 127;          # as posix_spawn uses
     # no need to use local here; this process will either exec or abort
 
     # Adjust close-on-exec flags:
@@ -955,6 +955,7 @@ sub _spawn_gpgv {
     chomp $err;
     if ($err =~ m/^ERR: (.*)$/) {
       # This is bad - we couldn't even execute the gpgv command properly
+      waitpid $pid, 0; # reap failed child
       ftp_abort
        ("gpg verify of directive file failed (error executing gpgv): $1");
     }