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 96e1220ed20c5ca8129d036362c6c65485215780..6e256c7122279030384ee912a6288a1bd31c87de 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;