diff options
author | Richard Levitte <levitte@openssl.org> | 2021-06-23 08:10:37 +0200 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-06-24 15:55:14 +1000 |
commit | 505fcdb5de382623aa8a1230579334b58aa72b45 (patch) | |
tree | f7d300529787e18ee8962915844c9acbd32e583a /test | |
parent | 2fee3a77f8179c8e4c0e33d622549270b380fa8a (diff) |
test/recipes/90-test_shlibload.t: Modify to work with known file names
Using File::Temp::tempfile() is admirable, but isn't necessary for the
sort of thing we use it for.
Furthermore, since tempfile() returns an opened file handle for
reading for the file in question, it may have effect that the file
becomes unwritable. This is the default on VMS, and since tempfile()
doesn't seem to have any option to affect this, it means that
test/shlibloadtest.c can't write the magic line to that file.
Also, if we consider forensics, to be able to see what a test produced
to determine what went wrong, it's better to use specific and known
file names.
Therefore, this test is modified to use well known file names, and to
open them for reading after the shlibloadtest program has been run
instead of before.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/15872)
Diffstat (limited to 'test')
-rw-r--r-- | test/recipes/90-test_shlibload.t | 62 |
1 files changed, 35 insertions, 27 deletions
diff --git a/test/recipes/90-test_shlibload.t b/test/recipes/90-test_shlibload.t index d3944308d3..29826f7252 100644 --- a/test/recipes/90-test_shlibload.t +++ b/test/recipes/90-test_shlibload.t @@ -8,7 +8,6 @@ use OpenSSL::Test qw/:DEFAULT srctop_dir bldtop_dir/; use OpenSSL::Test::Utils; -use File::Temp qw(tempfile); #Load configdata.pm @@ -29,35 +28,44 @@ plan tests => 10; my $libcrypto = platform->sharedlib('libcrypto'); my $libssl = platform->sharedlib('libssl'); +my $atexit_outfile; -(my $fh, my $filename) = tempfile(); -ok(run(test(["shlibloadtest", "-crypto_first", $libcrypto, $libssl, $filename])), - "running shlibloadtest -crypto_first $filename"); -ok(check_atexit($fh)); -unlink $filename; -($fh, $filename) = tempfile(); -ok(run(test(["shlibloadtest", "-ssl_first", $libcrypto, $libssl, $filename])), - "running shlibloadtest -ssl_first $filename"); -ok(check_atexit($fh)); -unlink $filename; -($fh, $filename) = tempfile(); -ok(run(test(["shlibloadtest", "-just_crypto", $libcrypto, $libssl, $filename])), - "running shlibloadtest -just_crypto $filename"); -ok(check_atexit($fh)); -unlink $filename; -($fh, $filename) = tempfile(); -ok(run(test(["shlibloadtest", "-dso_ref", $libcrypto, $libssl, $filename])), - "running shlibloadtest -dso_ref $filename"); -ok(check_atexit($fh)); -unlink $filename; -($fh, $filename) = tempfile(); -ok(run(test(["shlibloadtest", "-no_atexit", $libcrypto, $libssl, $filename])), - "running shlibloadtest -no_atexit $filename"); -ok(!check_atexit($fh)); -unlink $filename; +$atexit_outfile = 'atexit-cryptofirst.txt'; +1 while unlink $atexit_outfile; +ok(run(test(["shlibloadtest", "-crypto_first", $libcrypto, $libssl, $atexit_outfile])), + "running shlibloadtest -crypto_first $atexit_outfile"); +ok(check_atexit($atexit_outfile)); + +$atexit_outfile = 'atexit-sslfirst.txt'; +1 while unlink $atexit_outfile; +ok(run(test(["shlibloadtest", "-ssl_first", $libcrypto, $libssl, $atexit_outfile])), + "running shlibloadtest -ssl_first $atexit_outfile"); +ok(check_atexit($atexit_outfile)); + +$atexit_outfile = 'atexit-justcrypto.txt'; +1 while unlink $atexit_outfile; +ok(run(test(["shlibloadtest", "-just_crypto", $libcrypto, $libssl, $atexit_outfile])), + "running shlibloadtest -just_crypto $atexit_outfile"); +ok(check_atexit($atexit_outfile)); + +$atexit_outfile = 'atexit-dsoref.txt'; +1 while unlink $atexit_outfile; +ok(run(test(["shlibloadtest", "-dso_ref", $libcrypto, $libssl, $atexit_outfile])), + "running shlibloadtest -dso_ref $atexit_outfile"); +ok(check_atexit($atexit_outfile)); + +$atexit_outfile = 'atexit-noatexit.txt'; +1 while unlink $atexit_outfile; +ok(run(test(["shlibloadtest", "-no_atexit", $libcrypto, $libssl, $atexit_outfile])), + "running shlibloadtest -no_atexit $atexit_outfile"); +ok(!check_atexit($atexit_outfile)); sub check_atexit { - my $fh = shift; + my $filename = shift; + + open my $fh, '<', $filename; + return 0 unless defined $fh; + my $data = <$fh>; return 1 if (defined $data && $data =~ m/atexit\(\) run/); |