mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-30 19:54:39 +00:00
Refuse to run test_cipherlist unless shared library matches build
test/cipherlist_test.c is an internal consistency check, and therefore requires that the shared library it runs against matches what it was built for. test/recipes/test_cipherlist.t is made to refuse running unless library version and build version match. This adds a helper program test/versions.c, that simply displays the library and the build version. Partially fixes #5751 Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5753) (cherry picked from commit cde87deafa7486f26bdf954867a6d72ca4ea06e7)
This commit is contained in:
parent
f91e026e38
commit
efe749c840
@ -24,6 +24,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN
|
|||||||
ENDRAW[descrip.mms]
|
ENDRAW[descrip.mms]
|
||||||
|
|
||||||
PROGRAMS_NO_INST=\
|
PROGRAMS_NO_INST=\
|
||||||
|
versions \
|
||||||
aborttest test_test \
|
aborttest test_test \
|
||||||
sanitytest exdatatest bntest \
|
sanitytest exdatatest bntest \
|
||||||
ectest ecstresstest ecdsatest gmdifftest pbelutest ideatest \
|
ectest ecstresstest ecdsatest gmdifftest pbelutest ideatest \
|
||||||
@ -52,6 +53,10 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN
|
|||||||
servername_test ocspapitest rsa_mp_test fatalerrtest tls13ccstest \
|
servername_test ocspapitest rsa_mp_test fatalerrtest tls13ccstest \
|
||||||
sysdefaulttest
|
sysdefaulttest
|
||||||
|
|
||||||
|
SOURCE[versions]=versions.c
|
||||||
|
INCLUDE[versions]=../include
|
||||||
|
DEPEND[versions]=../libcrypto
|
||||||
|
|
||||||
SOURCE[aborttest]=aborttest.c
|
SOURCE[aborttest]=aborttest.c
|
||||||
INCLUDE[aborttest]=../include
|
INCLUDE[aborttest]=../include
|
||||||
DEPEND[aborttest]=../libcrypto
|
DEPEND[aborttest]=../libcrypto
|
||||||
|
@ -12,11 +12,16 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use OpenSSL::Test::Simple;
|
use OpenSSL::Test::Simple;
|
||||||
use OpenSSL::Test;
|
use OpenSSL::Test qw(:DEFAULT openssl_versions);
|
||||||
use OpenSSL::Test::Utils qw(alldisabled available_protocols);
|
use OpenSSL::Test::Utils qw(alldisabled available_protocols);
|
||||||
|
|
||||||
setup("test_cipherlist");
|
setup("test_cipherlist");
|
||||||
|
|
||||||
|
my ($build_version, $library_version) = openssl_versions();
|
||||||
|
plan skip_all =>
|
||||||
|
"This test recipe isn't supported when doing regression testing"
|
||||||
|
if $build_version != $library_version;
|
||||||
|
|
||||||
my $no_anytls = alldisabled(available_protocols("tls"));
|
my $no_anytls = alldisabled(available_protocols("tls"));
|
||||||
|
|
||||||
# If we have no protocols, then we also have no supported ciphers.
|
# If we have no protocols, then we also have no supported ciphers.
|
||||||
|
20
test/versions.c
Normal file
20
test/versions.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||||
|
* this file except in compliance with the License. You can obtain a copy
|
||||||
|
* in the file LICENSE in the source distribution or at
|
||||||
|
* https://www.openssl.org/source/license.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <openssl/opensslv.h>
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
|
||||||
|
/* A simple helper for the perl function OpenSSL::Test::openssl_versions */
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
printf("Build version: 0x%08lX\n", OPENSSL_VERSION_NUMBER);
|
||||||
|
printf("Library version: 0x%08lX\n", OpenSSL_version_num());
|
||||||
|
return 0;
|
||||||
|
}
|
@ -21,7 +21,8 @@ $VERSION = "0.8";
|
|||||||
@EXPORT_OK = (@Test::More::EXPORT_OK, qw(bldtop_dir bldtop_file
|
@EXPORT_OK = (@Test::More::EXPORT_OK, qw(bldtop_dir bldtop_file
|
||||||
srctop_dir srctop_file
|
srctop_dir srctop_file
|
||||||
data_file
|
data_file
|
||||||
pipe with cmdstr quotify));
|
pipe with cmdstr quotify
|
||||||
|
openssl_versions));
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
@ -788,6 +789,32 @@ sub quotify {
|
|||||||
return map { $arg_formatter->($_) } @_;
|
return map { $arg_formatter->($_) } @_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item B<openssl_versions>
|
||||||
|
|
||||||
|
Returns a list of two numbers, the first representing the build version,
|
||||||
|
the second representing the library version. See opensslv.h for more
|
||||||
|
information on those numbers.
|
||||||
|
|
||||||
|
= back
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
my @versions = ();
|
||||||
|
sub openssl_versions {
|
||||||
|
unless (@versions) {
|
||||||
|
my %lines =
|
||||||
|
map { s/\R$//;
|
||||||
|
/^(.*): (0x[[:xdigit:]]{8})$/;
|
||||||
|
die "Weird line: $_" unless defined $1;
|
||||||
|
$1 => hex($2) }
|
||||||
|
run(test(['versions']), capture => 1);
|
||||||
|
@versions = ( $lines{'Build version'}, $lines{'Library version'} );
|
||||||
|
}
|
||||||
|
return @versions;
|
||||||
|
}
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# private functions. These are never exported.
|
# private functions. These are never exported.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user