OpenCoverage

ssl_init.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/ssl/ssl_init.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#include "e_os.h"-
11-
12#include "internal/err.h"-
13#include <openssl/crypto.h>-
14#include <openssl/evp.h>-
15#include "ssl_locl.h"-
16#include "internal/thread_once.h"-
17-
18static int stopped;-
19-
20static void ssl_library_stop(void);-
21-
22static CRYPTO_ONCE ssl_base = CRYPTO_ONCE_STATIC_INIT;-
23static int ssl_base_inited = 0;-
24DEFINE_RUN_ONCE_STATIC(ossl_init_ssl_base)
executed 1958 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
1958
25{-
26#ifdef OPENSSL_INIT_DEBUG-
27 fprintf(stderr, "OPENSSL_INIT: ossl_init_ssl_base: "-
28 "Adding SSL ciphers and digests\n");-
29#endif-
30#ifndef OPENSSL_NO_DES-
31 EVP_add_cipher(EVP_des_cbc());-
32 EVP_add_cipher(EVP_des_ede3_cbc());-
33#endif-
34#ifndef OPENSSL_NO_IDEA-
35 EVP_add_cipher(EVP_idea_cbc());-
36#endif-
37#ifndef OPENSSL_NO_RC4-
38 EVP_add_cipher(EVP_rc4());-
39# ifndef OPENSSL_NO_MD5-
40 EVP_add_cipher(EVP_rc4_hmac_md5());-
41# endif-
42#endif-
43#ifndef OPENSSL_NO_RC2-
44 EVP_add_cipher(EVP_rc2_cbc());-
45 /*-
46 * Not actually used for SSL/TLS but this makes PKCS#12 work if an-
47 * application only calls SSL_library_init().-
48 */-
49 EVP_add_cipher(EVP_rc2_40_cbc());-
50#endif-
51 EVP_add_cipher(EVP_aes_128_cbc());-
52 EVP_add_cipher(EVP_aes_192_cbc());-
53 EVP_add_cipher(EVP_aes_256_cbc());-
54 EVP_add_cipher(EVP_aes_128_gcm());-
55 EVP_add_cipher(EVP_aes_256_gcm());-
56 EVP_add_cipher(EVP_aes_128_ccm());-
57 EVP_add_cipher(EVP_aes_256_ccm());-
58 EVP_add_cipher(EVP_aes_128_cbc_hmac_sha1());-
59 EVP_add_cipher(EVP_aes_256_cbc_hmac_sha1());-
60 EVP_add_cipher(EVP_aes_128_cbc_hmac_sha256());-
61 EVP_add_cipher(EVP_aes_256_cbc_hmac_sha256());-
62#ifndef OPENSSL_NO_ARIA-
63 EVP_add_cipher(EVP_aria_128_gcm());-
64 EVP_add_cipher(EVP_aria_256_gcm());-
65#endif-
66#ifndef OPENSSL_NO_CAMELLIA-
67 EVP_add_cipher(EVP_camellia_128_cbc());-
68 EVP_add_cipher(EVP_camellia_256_cbc());-
69#endif-
70#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)-
71 EVP_add_cipher(EVP_chacha20_poly1305());-
72#endif-
73-
74#ifndef OPENSSL_NO_SEED-
75 EVP_add_cipher(EVP_seed_cbc());-
76#endif-
77-
78#ifndef OPENSSL_NO_MD5-
79 EVP_add_digest(EVP_md5());-
80 EVP_add_digest_alias(SN_md5, "ssl3-md5");-
81 EVP_add_digest(EVP_md5_sha1());-
82#endif-
83 EVP_add_digest(EVP_sha1()); /* RSA with sha1 */-
84 EVP_add_digest_alias(SN_sha1, "ssl3-sha1");-
85 EVP_add_digest_alias(SN_sha1WithRSAEncryption, SN_sha1WithRSA);-
86 EVP_add_digest(EVP_sha224());-
87 EVP_add_digest(EVP_sha256());-
88 EVP_add_digest(EVP_sha384());-
89 EVP_add_digest(EVP_sha512());-
90#ifndef OPENSSL_NO_COMP-
91# ifdef OPENSSL_INIT_DEBUG-
92 fprintf(stderr, "OPENSSL_INIT: ossl_init_ssl_base: "-
93 "SSL_COMP_get_compression_methods()\n");-
94# endif-
95 /*-
96 * This will initialise the built-in compression algorithms. The value-
97 * returned is a STACK_OF(SSL_COMP), but that can be discarded safely-
98 */-
99 SSL_COMP_get_compression_methods();-
100#endif-
101 /* initialize cipher/digest methods table */-
102 if (!ssl_load_ciphers())
!ssl_load_ciphers()Description
TRUEnever evaluated
FALSEevaluated 1958 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-1958
103 return 0;
never executed: return 0;
0
104-
105#ifdef OPENSSL_INIT_DEBUG-
106 fprintf(stderr, "OPENSSL_INIT: ossl_init_ssl_base: "-
107 "SSL_add_ssl_module()\n");-
108#endif-
109 /*-
110 * We ignore an error return here. Not much we can do - but not that bad-
111 * either. We can still safely continue.-
112 */-
113 OPENSSL_atexit(ssl_library_stop);-
114 ssl_base_inited = 1;-
115 return 1;
executed 1958 times by 2 tests: return 1;
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
1958
116}-
117-
118static CRYPTO_ONCE ssl_strings = CRYPTO_ONCE_STATIC_INIT;-
119static int ssl_strings_inited = 0;-
120DEFINE_RUN_ONCE_STATIC(ossl_init_load_ssl_strings)
executed 546 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
546
121{-
122 /*-
123 * OPENSSL_NO_AUTOERRINIT is provided here to prevent at compile time-
124 * pulling in all the error strings during static linking-
125 */-
126#if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)-
127# ifdef OPENSSL_INIT_DEBUG-
128 fprintf(stderr, "OPENSSL_INIT: ossl_init_load_ssl_strings: "-
129 "ERR_load_SSL_strings()\n");-
130# endif-
131 ERR_load_SSL_strings();-
132 ssl_strings_inited = 1;-
133#endif-
134 return 1;
executed 546 times by 2 tests: return 1;
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
546
135}-
136-
137DEFINE_RUN_ONCE_STATIC(ossl_init_no_load_ssl_strings)
never executed: end of block
0
138{-
139 /* Do nothing in this case */-
140 return 1;
never executed: return 1;
0
141}-
142-
143static void ssl_library_stop(void)-
144{-
145 /* Might be explicitly called and also by atexit */-
146 if (stopped)
stoppedDescription
TRUEnever evaluated
FALSEevaluated 1958 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-1958
147 return;
never executed: return;
0
148 stopped = 1;-
149-
150 if (ssl_base_inited) {
ssl_base_initedDescription
TRUEevaluated 1958 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
FALSEnever evaluated
0-1958
151#ifndef OPENSSL_NO_COMP-
152# ifdef OPENSSL_INIT_DEBUG-
153 fprintf(stderr, "OPENSSL_INIT: ssl_library_stop: "-
154 "ssl_comp_free_compression_methods_int()\n");-
155# endif-
156 ssl_comp_free_compression_methods_int();-
157#endif-
158 }
executed 1958 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
1958
159-
160 if (ssl_strings_inited) {
ssl_strings_initedDescription
TRUEevaluated 546 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
FALSEevaluated 1412 times by 1 test
Evaluated by:
  • libssl.so.1.1
546-1412
161#ifdef OPENSSL_INIT_DEBUG-
162 fprintf(stderr, "OPENSSL_INIT: ssl_library_stop: "-
163 "err_free_strings_int()\n");-
164#endif-
165 /*-
166 * If both crypto and ssl error strings are inited we will end up-
167 * calling err_free_strings_int() twice - but that's ok. The second-
168 * time will be a no-op. It's easier to do that than to try and track-
169 * between the two libraries whether they have both been inited.-
170 */-
171 err_free_strings_int();-
172 }
executed 546 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
546
173}
executed 1958 times by 2 tests: end of block
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
1958
174-
175/*-
176 * If this function is called with a non NULL settings value then it must be-
177 * called prior to any threads making calls to any OpenSSL functions,-
178 * i.e. passing a non-null settings value is assumed to be single-threaded.-
179 */-
180int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS * settings)-
181{-
182 static int stoperrset = 0;-
183-
184 if (stopped) {
stoppedDescription
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
185 if (!stoperrset) {
!stoperrsetDescription
TRUEnever evaluated
FALSEnever evaluated
0
186 /*-
187 * We only ever set this once to avoid getting into an infinite-
188 * loop where the error system keeps trying to init and fails so-
189 * sets an error etc-
190 */-
191 stoperrset = 1;-
192 SSLerr(SSL_F_OPENSSL_INIT_SSL, ERR_R_INIT_FAIL);-
193 }
never executed: end of block
0
194 return 0;
never executed: return 0;
0
195 }-
196-
197 if (!OPENSSL_init_crypto(opts
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
198#ifndef OPENSSL_NO_AUTOLOAD_CONFIG
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
199 | OPENSSL_INIT_LOAD_CONFIG
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
200#endif
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
201 | OPENSSL_INIT_ADD_ALL_CIPHERS
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
202 | OPENSSL_INIT_ADD_ALL_DIGESTS,
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
203 settings))
!OPENSSL_init_...08L, settings)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
204 return 0;
never executed: return 0;
0
205-
206 if (!RUN_ONCE(&ssl_base, ossl_init_ssl_base))
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
CRYPTO_THREAD_...sl_base_ossl_)Description
TRUEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
FALSEnever evaluated
0-18826
207 return 0;
never executed: return 0;
0
208-
209 if ((opts & OPENSSL_INIT_NO_LOAD_SSL_STRINGS)
(opts & 0x00100000L)Description
TRUEnever evaluated
FALSEevaluated 18826 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-18826
210 && !RUN_ONCE(&ssl_strings, ossl_init_no_load_ssl_strings))
CRYPTO_THREAD_...strings_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
211 return 0;
never executed: return 0;
0
212-
213 if ((opts & OPENSSL_INIT_LOAD_SSL_STRINGS)
(opts & 0x00200000L)Description
TRUEevaluated 17037 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
FALSEevaluated 1789 times by 1 test
Evaluated by:
  • libssl.so.1.1
1789-17037
214 && !RUN_ONCE(&ssl_strings, ossl_init_load_ssl_strings))
CRYPTO_THREAD_...strings_ossl_)Description
TRUEevaluated 17037 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 17037 times by 2 tests
Evaluated by:
  • libssl.so.1.1
  • tls13encryptiontest
0-17037
215 return 0;
never executed: return 0;
0
216-
217 return 1;
executed 18826 times by 2 tests: return 1;
Executed by:
  • libssl.so.1.1
  • tls13encryptiontest
18826
218}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2