Update - OpenSSL 1.1.1-pre7-dev

This commit is contained in:
2018-05-23 23:52:41 +09:00
parent e8a0afd4a0
commit ef253190c7
624 changed files with 189420 additions and 8064 deletions
+63 -4
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
* Copyright 2016-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
@@ -13,18 +13,24 @@
#include <openssl/opensslv.h>
#include <openssl/ssl.h>
#include <openssl/ossl_typ.h>
#include "internal/dso_conf.h"
#include "testutil.h"
typedef void DSO;
typedef const SSL_METHOD * (*TLS_method_t)(void);
typedef SSL_CTX * (*SSL_CTX_new_t)(const SSL_METHOD *meth);
typedef void (*SSL_CTX_free_t)(SSL_CTX *);
typedef unsigned long (*ERR_get_error_t)(void);
typedef unsigned long (*OpenSSL_version_num_t)(void);
typedef DSO * (*DSO_dsobyaddr_t)(void (*addr)(void), int flags);
typedef int (*DSO_free_t)(DSO *dso);
typedef enum test_types_en {
CRYPTO_FIRST,
SSL_FIRST,
JUST_CRYPTO
JUST_CRYPTO,
DSO_REFTEST
} TEST_TYPE;
static TEST_TYPE test_type;
@@ -119,9 +125,13 @@ static int test_lib(void)
|| !TEST_true(shlib_load(path_crypto, &cryptolib)))
goto end;
break;
case DSO_REFTEST:
if (!TEST_true(shlib_load(path_crypto, &cryptolib)))
goto end;
break;
}
if (test_type != JUST_CRYPTO) {
if (test_type != JUST_CRYPTO && test_type != DSO_REFTEST) {
if (!TEST_true(shlib_sym(ssllib, "TLS_method", &symbols[0].sym))
|| !TEST_true(shlib_sym(ssllib, "SSL_CTX_new", &symbols[1].sym))
|| !TEST_true(shlib_sym(ssllib, "SSL_CTX_free", &symbols[2].sym)))
@@ -141,9 +151,52 @@ static int test_lib(void)
myERR_get_error = (ERR_get_error_t)symbols[0].func;
if (!TEST_int_eq(myERR_get_error(), 0))
goto end;
/*
* The bits that COMPATIBILITY_MASK lets through MUST be the same in
* the library and in the application.
* The bits that are masked away MUST be a larger or equal number in
* the library compared to the application.
*/
# define COMPATIBILITY_MASK 0xfff00000L
myOpenSSL_version_num = (OpenSSL_version_num_t)symbols[1].func;
if (!TEST_int_eq(myOpenSSL_version_num(), OPENSSL_VERSION_NUMBER))
if (!TEST_int_eq(myOpenSSL_version_num() & COMPATIBILITY_MASK,
OPENSSL_VERSION_NUMBER & COMPATIBILITY_MASK))
goto end;
if (!TEST_int_ge(myOpenSSL_version_num() & ~COMPATIBILITY_MASK,
OPENSSL_VERSION_NUMBER & ~COMPATIBILITY_MASK))
goto end;
if (test_type == DSO_REFTEST) {
# ifdef DSO_DLFCN
DSO_dsobyaddr_t myDSO_dsobyaddr;
DSO_free_t myDSO_free;
/*
* This is resembling the code used in ossl_init_base() and
* OPENSSL_atexit() to block unloading the library after dlclose().
* We are not testing this on Windows, because it is done there in a
* completely different way. Especially as a call to DSO_dsobyaddr()
* will always return an error, because DSO_pathbyaddr() is not
* implemented there.
*/
if (!TEST_true(shlib_sym(cryptolib, "DSO_dsobyaddr", &symbols[0].sym))
|| !TEST_true(shlib_sym(cryptolib, "DSO_free",
&symbols[1].sym)))
goto end;
myDSO_dsobyaddr = (DSO_dsobyaddr_t)symbols[0].func;
myDSO_free = (DSO_free_t)symbols[1].func;
{
DSO *hndl;
/* use known symbol from crypto module */
if (!TEST_ptr(hndl = myDSO_dsobyaddr((void (*)(void))ERR_get_error, 0)))
goto end;
myDSO_free(hndl);
}
# endif /* DSO_DLFCN */
}
switch (test_type) {
case JUST_CRYPTO:
@@ -160,6 +213,10 @@ static int test_lib(void)
|| !TEST_true(shlib_close(cryptolib)))
goto end;
break;
case DSO_REFTEST:
if (!TEST_true(shlib_close(cryptolib)))
goto end;
break;
}
result = 1;
@@ -179,6 +236,8 @@ int setup_tests(void)
test_type = SSL_FIRST;
} else if (strcmp(p, "-just_crypto") == 0) {
test_type = JUST_CRYPTO;
} else if (strcmp(p, "-dso_ref") == 0) {
test_type = JUST_CRYPTO;
} else {
TEST_error("Unrecognised argument");
return 0;