mirror of https://github.com/openssl/openssl.git
				
				
				
			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 cde87deafa)
			
			
This commit is contained in:
		
							parent
							
								
									f91e026e38
								
							
						
					
					
						commit
						efe749c840
					
				|  | @ -24,6 +24,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN | |||
|   ENDRAW[descrip.mms] | ||||
| 
 | ||||
|   PROGRAMS_NO_INST=\ | ||||
|           versions \ | ||||
|           aborttest test_test \ | ||||
|           sanitytest exdatatest bntest \ | ||||
|           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 \ | ||||
|           sysdefaulttest | ||||
| 
 | ||||
|   SOURCE[versions]=versions.c | ||||
|   INCLUDE[versions]=../include | ||||
|   DEPEND[versions]=../libcrypto | ||||
| 
 | ||||
|   SOURCE[aborttest]=aborttest.c | ||||
|   INCLUDE[aborttest]=../include | ||||
|   DEPEND[aborttest]=../libcrypto | ||||
|  |  | |||
|  | @ -12,11 +12,16 @@ use strict; | |||
| use warnings; | ||||
| 
 | ||||
| use OpenSSL::Test::Simple; | ||||
| use OpenSSL::Test; | ||||
| use OpenSSL::Test qw(:DEFAULT openssl_versions); | ||||
| use OpenSSL::Test::Utils qw(alldisabled available_protocols); | ||||
| 
 | ||||
| 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")); | ||||
| 
 | ||||
| # If we have no protocols, then we also have no supported ciphers. | ||||
|  |  | |||
|  | @ -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 | ||||
|                                          srctop_dir srctop_file | ||||
|                                          data_file | ||||
|                                          pipe with cmdstr quotify)); | ||||
|                                          pipe with cmdstr quotify | ||||
|                                          openssl_versions)); | ||||
| 
 | ||||
| =head1 NAME | ||||
| 
 | ||||
|  | @ -788,6 +789,32 @@ sub quotify { | |||
|     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. | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue