Fixed lost OpenSSL output with "-t".
authorGuenter Knauf <lists@gknw.net>
Tue, 9 Apr 2013 14:59:57 +0000 (16:59 +0200)
committerGuenter Knauf <lists@gknw.net>
Tue, 9 Apr 2013 14:59:57 +0000 (16:59 +0200)
The OpenSSL pipe wrote to the final CA bundle file, but the encoded PEM
output wrote to a temporary file.  Consequently, the OpenSSL output was
lost when the temp file was renamed to the final file at script finish
(overwriting the final file written earlier by openssl).
Patch posted to the list by Richard Michael (rmichael edgeofthenet org).

lib/mk-ca-bundle.pl

index 2eeefff..188c939 100755 (executable)
@@ -203,9 +203,9 @@ while (<TXT>) {
         print CRT $pem;
       }
       if ($opt_t) {
-        open(TMP, "|$openssl x509 -md5 -fingerprint -text -inform PEM >> $crt") or die "Couldn't open openssl pipe: $!\n";
-        print TMP $pem;
-        close(TMP) or die "Couldn't close openssl pipe: $!\n";
+        my $openssl_output = `echo '$pem' | $openssl x509 -md5 -fingerprint -text -inform PEM` or
+          die "Couldn't run openssl : $?\n";
+        print CRT $openssl_output;
       }
       print STDERR "Parsing: $caname\n" if ($opt_v);
       $certnum ++;