Pipes on VMS do not work well with binary data, use an intermediary file
authorRichard Levitte <levitte@openssl.org>
Wed, 13 Jan 2016 16:27:06 +0000 (17:27 +0100)
committerRichard Levitte <levitte@openssl.org>
Wed, 13 Jan 2016 16:27:06 +0000 (17:27 +0100)
VMS being a record oriented operating system, it's uncertain how the
'pipe' passes binary data from one process to another.  Experience
shows that we get in trouble, and it's probably due to the pipe in
itself being opened in text mode (variable length records).

It's safer to pass data via an intermediary file instead.

Reviewed-by: Rich Salz <rsalz@openssl.org>
test/recipes/80-test_ocsp.t

index 96e1220..6e256c7 100644 (file)
@@ -20,15 +20,17 @@ sub test_ocsp {
     my $CAfile = shift;
     my $expected_exit = shift;
 
+    run(app(["openssl", "base64", "-d",
+             "-in", catfile($ocspdir,$inputfile),
+             "-out", "ocsp-resp-fff.dat"]));
     with({ exit_checker => sub { return shift == $expected_exit; } },
-        sub { ok(run(pipe(app(["openssl", "base64", "-d",
-                               "-in", catfile($ocspdir,$inputfile)]),
-                          app(["openssl", "ocsp", "-respin", "-",
-                               "-partial_chain", @check_time,
-                               "-CAfile", catfile($ocspdir, $CAfile),
-                               "-verify_other", catfile($ocspdir, $CAfile),
-                               "-no-CApath"]))),
-                 $title); });
+         sub { ok(run(app(["openssl", "ocsp", "-respin", "ocsp-resp-fff.dat",
+                           "-partial_chain", @check_time,
+                           "-CAfile", catfile($ocspdir, $CAfile),
+                           "-verify_other", catfile($ocspdir, $CAfile),
+                           "-no-CApath"])),
+                  $title); });
+    unlink "ocsp-resp-fff.dat";
 }
 
 plan tests => 10;