close monkeysphere call, provide scaffolding for marginal UI
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Thu, 29 Apr 2010 14:22:24 +0000 (10:22 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Thu, 29 Apr 2010 14:22:24 +0000 (10:22 -0400)
Changelog
msva-perl

index 39e415fc43d3417053f9e505a8c8c42601a5af11..8590c10d2f0e740d186f3b2205199501302f28c0 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,6 +1,7 @@
 msva-perl (0.3~pre) UNRELEASED;
 
   * packaging re-organization
+  * properly closing piped monkeysphere call
 
  -- Daniel Kahn Gillmor <dkg@fifthhorseman.net>  Tue, 23 Mar 2010 16:50:07 -0400
 
index b7b670686b6938d4265de7f6732cf67195819b2e..8d7d639aaa4737ba18226c569691352f1122dd98 100755 (executable)
--- a/msva-perl
+++ b/msva-perl
@@ -365,6 +365,7 @@ use strict;
           # clean up the path for taint-check mode:
           $ENV{PATH} = '/usr/local/bin:/usr/bin:/bin';
 
+          # FIXME: should test exit code of open() and do something intelligent with it.
           open($fh, '-|', 'monkeysphere', 'keys-for-userid', $uid);
           while(<$fh>) {
             my @keyinfo = parse_openssh_pubkey($_);
@@ -380,6 +381,16 @@ use strict;
               $ret->{message} = sprintf('Successfully validated "%s" through the OpenPGP Web of Trust.', $uid);
             }
           }
+          my $closeval = close($fh);
+          my $subproc_retval = POSIX::WEXITSTATUS($?);
+          if ((!$closeval) && ($! != 0)) {
+            msvalog('error', "Got bad errno from closing monkeysphere subprocess: %d \n", $!);
+          }
+          if ($subproc_retval != 0) {
+            msvalog('error', "Got bad return code from monkeysphere subprocess: %d \n", $subproc_retval);
+            # FIXME: marginal UI here?  do something with the return code?
+          }
+
         }
       } else {
         msvalog('error', "failed to decode %s\n", unpack('H*', $cert->pubkey()));