OpenCoverage

init.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/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#include "internal/cryptlib_int.h"-
12#include <openssl/err.h>-
13#include "internal/rand_int.h"-
14#include "internal/bio.h"-
15#include <openssl/evp.h>-
16#include "internal/evp_int.h"-
17#include "internal/conf.h"-
18#include "internal/async.h"-
19#include "internal/engine.h"-
20#include "internal/comp.h"-
21#include "internal/err.h"-
22#include "internal/err_int.h"-
23#include "internal/objects.h"-
24#include <stdlib.h>-
25#include <assert.h>-
26#include "internal/thread_once.h"-
27#include "internal/dso_conf.h"-
28#include "internal/dso.h"-
29#include "internal/store.h"-
30-
31static int stopped = 0;-
32-
33/*-
34 * Since per-thread-specific-data destructors are not universally-
35 * available, i.e. not on Windows, only below CRYPTO_THREAD_LOCAL key-
36 * is assumed to have destructor associated. And then an effort is made-
37 * to call this single destructor on non-pthread platform[s].-
38 *-
39 * Initial value is "impossible". It is used as guard value to shortcut-
40 * destructor for threads terminating before libcrypto is initialized or-
41 * after it's de-initialized. Access to the key doesn't have to be-
42 * serialized for the said threads, because they didn't use libcrypto-
43 * and it doesn't matter if they pick "impossible" or derefernce real-
44 * key value and pull NULL past initialization in the first thread that-
45 * intends to use libcrypto.-
46 */-
47static union {-
48 long sane;-
49 CRYPTO_THREAD_LOCAL value;-
50} destructor_key = { -1 };-
51-
52static void ossl_init_thread_stop(struct thread_local_inits_st *locals);-
53-
54static void ossl_init_thread_destructor(void *local)-
55{-
56 ossl_init_thread_stop((struct thread_local_inits_st *)local);-
57}
executed 3 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
3
58-
59static struct thread_local_inits_st *ossl_init_get_thread_local(int alloc)-
60{-
61 struct thread_local_inits_st *local =-
62 CRYPTO_THREAD_get_local(&destructor_key.value);-
63-
64 if (alloc) {
allocDescription
TRUEevaluated 3092 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076-3092
65 if (local == NULL
local == ((void *)0)Description
TRUEevaluated 2078 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 1014 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
1014-2078
66 && (local = OPENSSL_zalloc(sizeof(*local))) != NULL
(local = CRYPT...!= ((void *)0)Description
TRUEevaluated 2078 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEnever evaluated
0-2078
67 && !CRYPTO_THREAD_set_local(&destructor_key.value, local)) {
!CRYPTO_THREAD....value, local)Description
TRUEnever evaluated
FALSEevaluated 2078 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2078
68 OPENSSL_free(local);-
69 return NULL;
never executed: return ((void *)0) ;
0
70 }-
71 } else {
executed 3092 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3092
72 CRYPTO_THREAD_set_local(&destructor_key.value, NULL);-
73 }
executed 2076 times by 12 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
74-
75 return local;
executed 5168 times by 12 tests: return local;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
5168
76}-
77-
78typedef struct ossl_init_stop_st OPENSSL_INIT_STOP;-
79struct ossl_init_stop_st {-
80 void (*handler)(void);-
81 OPENSSL_INIT_STOP *next;-
82};-
83-
84static OPENSSL_INIT_STOP *stop_handlers = NULL;-
85static CRYPTO_RWLOCK *init_lock = NULL;-
86-
87static CRYPTO_ONCE base = CRYPTO_ONCE_STATIC_INIT;-
88static int base_inited = 0;-
89DEFINE_RUN_ONCE_STATIC(ossl_init_base)
executed 2076 times by 12 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
90{-
91 CRYPTO_THREAD_LOCAL key;-
92-
93#ifdef OPENSSL_INIT_DEBUG-
94 fprintf(stderr, "OPENSSL_INIT: ossl_init_base: Setting up stop handlers\n");-
95#endif-
96#ifndef OPENSSL_NO_CRYPTO_MDEBUG-
97 ossl_malloc_setup_failures();-
98#endif-
99 if (!CRYPTO_THREAD_init_local(&key, ossl_init_thread_destructor))
!CRYPTO_THREAD...ad_destructor)Description
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
100 return 0;
never executed: return 0;
0
101 if ((init_lock = CRYPTO_THREAD_lock_new()) == NULL)
(init_lock = C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
102 goto err;
never executed: goto err;
0
103#ifndef OPENSSL_SYS_UEFI-
104 if (atexit(OPENSSL_cleanup) != 0)
atexit(OPENSSL_cleanup) != 0Description
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
105 goto err;
never executed: goto err;
0
106#endif-
107 OPENSSL_cpuid_setup();-
108-
109 destructor_key.value = key;-
110 base_inited = 1;-
111 return 1;
executed 2076 times by 12 tests: return 1;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
112-
113err:-
114#ifdef OPENSSL_INIT_DEBUG-
115 fprintf(stderr, "OPENSSL_INIT: ossl_init_base not ok!\n");-
116#endif-
117 CRYPTO_THREAD_lock_free(init_lock);-
118 init_lock = NULL;-
119-
120 CRYPTO_THREAD_cleanup_local(&key);-
121 return 0;
never executed: return 0;
0
122}-
123-
124static CRYPTO_ONCE load_crypto_nodelete = CRYPTO_ONCE_STATIC_INIT;-
125DEFINE_RUN_ONCE_STATIC(ossl_init_load_crypto_nodelete)
executed 2076 times by 12 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
126{-
127#ifdef OPENSSL_INIT_DEBUG-
128 fprintf(stderr, "OPENSSL_INIT: ossl_init_load_crypto_nodelete()\n");-
129#endif-
130#if !defined(OPENSSL_NO_DSO) && !defined(OPENSSL_USE_NODELETE)-
131# ifdef DSO_WIN32-
132 {-
133 HMODULE handle = NULL;-
134 BOOL ret;-
135-
136 /* We don't use the DSO route for WIN32 because there is a better way */-
137 ret = GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS-
138 | GET_MODULE_HANDLE_EX_FLAG_PIN,-
139 (void *)&base_inited, &handle);-
140-
141# ifdef OPENSSL_INIT_DEBUG-
142 fprintf(stderr, "OPENSSL_INIT: obtained DSO reference? %s\n",-
143 (ret == TRUE ? "No!" : "Yes."));-
144# endif-
145 return (ret == TRUE) ? 1 : 0;-
146 }-
147# else-
148 /*-
149 * Deliberately leak a reference to ourselves. This will force the library-
150 * to remain loaded until the atexit() handler is run at process exit.-
151 */-
152 {-
153 DSO *dso;-
154 void *err;-
155-
156 if (!err_shelve_state(&err))-
157 return 0;-
158-
159 dso = DSO_dsobyaddr(&base_inited, DSO_FLAG_NO_UNLOAD_ON_FREE);-
160# ifdef OPENSSL_INIT_DEBUG-
161 fprintf(stderr, "OPENSSL_INIT: obtained DSO reference? %s\n",-
162 (dso == NULL ? "No!" : "Yes."));-
163 /*-
164 * In case of No!, it is uncertain our exit()-handlers can still be-
165 * called. After dlclose() the whole library might have been unloaded-
166 * already.-
167 */-
168# endif-
169 DSO_free(dso);-
170 err_unshelve_state(err);-
171 }-
172# endif-
173#endif-
174-
175 return 1;
executed 2076 times by 12 tests: return 1;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
176}-
177-
178static CRYPTO_ONCE load_crypto_strings = CRYPTO_ONCE_STATIC_INIT;-
179static int load_crypto_strings_inited = 0;-
180DEFINE_RUN_ONCE_STATIC(ossl_init_no_load_crypto_strings)
never executed: end of block
0
181{-
182 /* Do nothing in this case */-
183 return 1;
never executed: return 1;
0
184}-
185-
186DEFINE_RUN_ONCE_STATIC(ossl_init_load_crypto_strings)
executed 2074 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2074
187{-
188 int ret = 1;-
189 /*-
190 * OPENSSL_NO_AUTOERRINIT is provided here to prevent at compile time-
191 * pulling in all the error strings during static linking-
192 */-
193#if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)-
194# ifdef OPENSSL_INIT_DEBUG-
195 fprintf(stderr, "OPENSSL_INIT: ossl_init_load_crypto_strings: "-
196 "err_load_crypto_strings_int()\n");-
197# endif-
198 ret = err_load_crypto_strings_int();-
199 load_crypto_strings_inited = 1;-
200#endif-
201 return ret;
executed 2074 times by 11 tests: return ret;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2074
202}-
203-
204static CRYPTO_ONCE add_all_ciphers = CRYPTO_ONCE_STATIC_INIT;-
205DEFINE_RUN_ONCE_STATIC(ossl_init_add_all_ciphers)
executed 1962 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1962
206{-
207 /*-
208 * OPENSSL_NO_AUTOALGINIT is provided here to prevent at compile time-
209 * pulling in all the ciphers during static linking-
210 */-
211#ifndef OPENSSL_NO_AUTOALGINIT-
212# ifdef OPENSSL_INIT_DEBUG-
213 fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_ciphers: "-
214 "openssl_add_all_ciphers_int()\n");-
215# endif-
216 openssl_add_all_ciphers_int();-
217#endif-
218 return 1;
executed 1962 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1962
219}-
220-
221static CRYPTO_ONCE add_all_digests = CRYPTO_ONCE_STATIC_INIT;-
222DEFINE_RUN_ONCE_STATIC(ossl_init_add_all_digests)
executed 1969 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1969
223{-
224 /*-
225 * OPENSSL_NO_AUTOALGINIT is provided here to prevent at compile time-
226 * pulling in all the ciphers during static linking-
227 */-
228#ifndef OPENSSL_NO_AUTOALGINIT-
229# ifdef OPENSSL_INIT_DEBUG-
230 fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_digests: "-
231 "openssl_add_all_digests()\n");-
232# endif-
233 openssl_add_all_digests_int();-
234#endif-
235 return 1;
executed 1969 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1969
236}-
237-
238DEFINE_RUN_ONCE_STATIC(ossl_init_no_add_algs)
never executed: end of block
0
239{-
240 /* Do nothing */-
241 return 1;
never executed: return 1;
0
242}-
243-
244static CRYPTO_ONCE config = CRYPTO_ONCE_STATIC_INIT;-
245static int config_inited = 0;-
246static const char *appname;-
247DEFINE_RUN_ONCE_STATIC(ossl_init_config)
executed 1958 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1958
248{-
249#ifdef OPENSSL_INIT_DEBUG-
250 fprintf(stderr,-
251 "OPENSSL_INIT: ossl_init_config: openssl_config(%s)\n",-
252 appname == NULL ? "NULL" : appname);-
253#endif-
254 openssl_config_int(appname);-
255 config_inited = 1;-
256 return 1;
executed 1958 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1958
257}-
258DEFINE_RUN_ONCE_STATIC(ossl_init_no_config)
never executed: end of block
0
259{-
260#ifdef OPENSSL_INIT_DEBUG-
261 fprintf(stderr,-
262 "OPENSSL_INIT: ossl_init_config: openssl_no_config_int()\n");-
263#endif-
264 openssl_no_config_int();-
265 config_inited = 1;-
266 return 1;
never executed: return 1;
0
267}-
268-
269static CRYPTO_ONCE async = CRYPTO_ONCE_STATIC_INIT;-
270static int async_inited = 0;-
271DEFINE_RUN_ONCE_STATIC(ossl_init_async)
executed 4 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4
272{-
273#ifdef OPENSSL_INIT_DEBUG-
274 fprintf(stderr, "OPENSSL_INIT: ossl_init_async: async_init()\n");-
275#endif-
276 if (!async_init())
!async_init()Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
277 return 0;
never executed: return 0;
0
278 async_inited = 1;-
279 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
280}-
281-
282#ifndef OPENSSL_NO_ENGINE-
283static CRYPTO_ONCE engine_openssl = CRYPTO_ONCE_STATIC_INIT;-
284DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl)
never executed: end of block
0
285{-
286# ifdef OPENSSL_INIT_DEBUG-
287 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_openssl: "-
288 "engine_load_openssl_int()\n");-
289# endif-
290 engine_load_openssl_int();-
291 return 1;
never executed: return 1;
0
292}-
293# ifndef OPENSSL_NO_DEVCRYPTOENG-
294static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;-
295DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)-
296{-
297# ifdef OPENSSL_INIT_DEBUG-
298 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "-
299 "engine_load_devcrypto_int()\n");-
300# endif-
301 engine_load_devcrypto_int();-
302 return 1;-
303}-
304# endif-
305-
306# ifndef OPENSSL_NO_RDRAND-
307static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT;-
308DEFINE_RUN_ONCE_STATIC(ossl_init_engine_rdrand)
executed 1959 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1959
309{-
310# ifdef OPENSSL_INIT_DEBUG-
311 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_rdrand: "-
312 "engine_load_rdrand_int()\n");-
313# endif-
314 engine_load_rdrand_int();-
315 return 1;
executed 1959 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1959
316}-
317# endif-
318static CRYPTO_ONCE engine_dynamic = CRYPTO_ONCE_STATIC_INIT;-
319DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic)
executed 1959 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1959
320{-
321# ifdef OPENSSL_INIT_DEBUG-
322 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dynamic: "-
323 "engine_load_dynamic_int()\n");-
324# endif-
325 engine_load_dynamic_int();-
326 return 1;
executed 1959 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1959
327}-
328# ifndef OPENSSL_NO_STATIC_ENGINE-
329# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)-
330static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT;-
331DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock)-
332{-
333# ifdef OPENSSL_INIT_DEBUG-
334 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_padlock: "-
335 "engine_load_padlock_int()\n");-
336# endif-
337 engine_load_padlock_int();-
338 return 1;-
339}-
340# endif-
341# if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG)-
342static CRYPTO_ONCE engine_capi = CRYPTO_ONCE_STATIC_INIT;-
343DEFINE_RUN_ONCE_STATIC(ossl_init_engine_capi)-
344{-
345# ifdef OPENSSL_INIT_DEBUG-
346 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_capi: "-
347 "engine_load_capi_int()\n");-
348# endif-
349 engine_load_capi_int();-
350 return 1;-
351}-
352# endif-
353# if !defined(OPENSSL_NO_AFALGENG)-
354static CRYPTO_ONCE engine_afalg = CRYPTO_ONCE_STATIC_INIT;-
355DEFINE_RUN_ONCE_STATIC(ossl_init_engine_afalg)-
356{-
357# ifdef OPENSSL_INIT_DEBUG-
358 fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_afalg: "-
359 "engine_load_afalg_int()\n");-
360# endif-
361 engine_load_afalg_int();-
362 return 1;-
363}-
364# endif-
365# endif-
366#endif-
367-
368#ifndef OPENSSL_NO_COMP-
369static CRYPTO_ONCE zlib = CRYPTO_ONCE_STATIC_INIT;-
370-
371static int zlib_inited = 0;-
372DEFINE_RUN_ONCE_STATIC(ossl_init_zlib)
never executed: end of block
0
373{-
374 /* Do nothing - we need to know about this for the later cleanup */-
375 zlib_inited = 1;-
376 return 1;
never executed: return 1;
0
377}-
378#endif-
379-
380static void ossl_init_thread_stop(struct thread_local_inits_st *locals)-
381{-
382 /* Can't do much about this */-
383 if (locals == NULL)
locals == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • rdrand_sanitytest
FALSEevaluated 2078 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
1-2078
384 return;
executed 1 time by 1 test: return;
Executed by:
  • rdrand_sanitytest
1
385-
386 if (locals->async) {
locals->asyncDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2077 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
1-2077
387#ifdef OPENSSL_INIT_DEBUG-
388 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: "-
389 "async_delete_thread_state()\n");-
390#endif-
391 async_delete_thread_state();-
392 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1
393-
394 if (locals->err_state) {
locals->err_stateDescription
TRUEevaluated 2074 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4-2074
395#ifdef OPENSSL_INIT_DEBUG-
396 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: "-
397 "err_delete_thread_state()\n");-
398#endif-
399 err_delete_thread_state();-
400 }
executed 2074 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2074
401-
402 if (locals->rand) {
locals->randDescription
TRUEevaluated 782 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
FALSEevaluated 1296 times by 10 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm4_internal_test
  • x509_internal_test
782-1296
403#ifdef OPENSSL_INIT_DEBUG-
404 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_stop: "-
405 "drbg_delete_thread_state()\n");-
406#endif-
407 drbg_delete_thread_state();-
408 }
executed 782 times by 2 tests: end of block
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
782
409-
410 OPENSSL_free(locals);-
411}
executed 2078 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2078
412-
413void OPENSSL_thread_stop(void)-
414{-
415 if (destructor_key.sane != -1)
destructor_key.sane != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
416 ossl_init_thread_stop(ossl_init_get_thread_local(0));
never executed: ossl_init_thread_stop(ossl_init_get_thread_local(0));
0
417}
never executed: end of block
0
418-
419int ossl_init_thread_start(uint64_t opts)-
420{-
421 struct thread_local_inits_st *locals;-
422-
423 if (!OPENSSL_init_crypto(0, NULL))
!OPENSSL_init_... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3092 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3092
424 return 0;
never executed: return 0;
0
425-
426 locals = ossl_init_get_thread_local(1);-
427-
428 if (locals == NULL)
locals == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3092 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3092
429 return 0;
never executed: return 0;
0
430-
431 if (opts & OPENSSL_INIT_THREAD_ASYNC) {
opts & 0x01Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3082 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
10-3082
432#ifdef OPENSSL_INIT_DEBUG-
433 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_start: "-
434 "marking thread for async\n");-
435#endif-
436 locals->async = 1;-
437 }
executed 10 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
10
438-
439 if (opts & OPENSSL_INIT_THREAD_ERR_STATE) {
opts & 0x02Description
TRUEevaluated 2074 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 1018 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
1018-2074
440#ifdef OPENSSL_INIT_DEBUG-
441 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_start: "-
442 "marking thread for err_state\n");-
443#endif-
444 locals->err_state = 1;-
445 }
executed 2074 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2074
446-
447 if (opts & OPENSSL_INIT_THREAD_RAND) {
opts & 0x04Description
TRUEevaluated 1008 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
FALSEevaluated 2084 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
1008-2084
448#ifdef OPENSSL_INIT_DEBUG-
449 fprintf(stderr, "OPENSSL_INIT: ossl_init_thread_start: "-
450 "marking thread for rand\n");-
451#endif-
452 locals->rand = 1;-
453 }
executed 1008 times by 2 tests: end of block
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
1008
454-
455 return 1;
executed 3092 times by 11 tests: return 1;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3092
456}-
457-
458void OPENSSL_cleanup(void)-
459{-
460 OPENSSL_INIT_STOP *currhandler, *lasthandler;-
461 CRYPTO_THREAD_LOCAL key;-
462-
463 /* If we've not been inited then no need to deinit */-
464 if (!base_inited)
!base_initedDescription
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
465 return;
never executed: return;
0
466-
467 /* Might be explicitly called and also by atexit */-
468 if (stopped)
stoppedDescription
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
469 return;
never executed: return;
0
470 stopped = 1;-
471-
472 /*-
473 * Thread stop may not get automatically called by the thread library for-
474 * the very last thread in some situations, so call it directly.-
475 */-
476 ossl_init_thread_stop(ossl_init_get_thread_local(0));-
477-
478 currhandler = stop_handlers;-
479 while (currhandler != NULL) {
currhandler != ((void *)0)Description
TRUEevaluated 1958 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
1958-2076
480 currhandler->handler();-
481 lasthandler = currhandler;-
482 currhandler = currhandler->next;-
483 OPENSSL_free(lasthandler);-
484 }
executed 1958 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1958
485 stop_handlers = NULL;-
486-
487 CRYPTO_THREAD_lock_free(init_lock);-
488 init_lock = NULL;-
489-
490 /*-
491 * We assume we are single-threaded for this function, i.e. no race-
492 * conditions for the various "*_inited" vars below.-
493 */-
494-
495#ifndef OPENSSL_NO_COMP-
496 if (zlib_inited) {
zlib_initedDescription
TRUEnever evaluated
FALSEevaluated 2076 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2076
497#ifdef OPENSSL_INIT_DEBUG-
498 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
499 "comp_zlib_cleanup_int()\n");-
500#endif-
501 comp_zlib_cleanup_int();-
502 }
never executed: end of block
0
503#endif-
504-
505 if (async_inited) {
async_initedDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2072 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
4-2072
506# ifdef OPENSSL_INIT_DEBUG-
507 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
508 "async_deinit()\n");-
509# endif-
510 async_deinit();-
511 }
executed 4 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4
512-
513 if (load_crypto_strings_inited) {
load_crypto_strings_initedDescription
TRUEevaluated 2074 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • rdrand_sanitytest
2-2074
514#ifdef OPENSSL_INIT_DEBUG-
515 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
516 "err_free_strings_int()\n");-
517#endif-
518 err_free_strings_int();-
519 }
executed 2074 times by 11 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2074
520-
521 key = destructor_key.value;-
522 destructor_key.sane = -1;-
523 CRYPTO_THREAD_cleanup_local(&key);-
524-
525#ifdef OPENSSL_INIT_DEBUG-
526 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
527 "rand_cleanup_int()\n");-
528 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
529 "conf_modules_free_int()\n");-
530#ifndef OPENSSL_NO_ENGINE-
531 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
532 "engine_cleanup_int()\n");-
533#endif-
534 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
535 "crypto_cleanup_all_ex_data_int()\n");-
536 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
537 "bio_sock_cleanup_int()\n");-
538 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
539 "bio_cleanup()\n");-
540 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
541 "evp_cleanup_int()\n");-
542 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
543 "obj_cleanup_int()\n");-
544 fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "-
545 "err_cleanup()\n");-
546#endif-
547 /*-
548 * Note that cleanup order is important:-
549 * - rand_cleanup_int could call an ENGINE's RAND cleanup function so-
550 * must be called before engine_cleanup_int()-
551 * - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up-
552 * before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().-
553 * - conf_modules_free_int() can end up in ENGINE code so must be called-
554 * before engine_cleanup_int()-
555 * - ENGINEs and additional EVP algorithms might use added OIDs names so-
556 * obj_cleanup_int() must be called last-
557 */-
558 rand_cleanup_int();-
559 rand_drbg_cleanup_int();-
560 conf_modules_free_int();-
561#ifndef OPENSSL_NO_ENGINE-
562 engine_cleanup_int();-
563#endif-
564 ossl_store_cleanup_int();-
565 crypto_cleanup_all_ex_data_int();-
566 bio_cleanup();-
567 evp_cleanup_int();-
568 obj_cleanup_int();-
569 err_cleanup();-
570-
571 CRYPTO_secure_malloc_done();-
572-
573 base_inited = 0;-
574}
executed 2076 times by 12 tests: end of block
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2076
575-
576/*-
577 * If this function is called with a non NULL settings value then it must be-
578 * called prior to any threads making calls to any OpenSSL functions,-
579 * i.e. passing a non-null settings value is assumed to be single-threaded.-
580 */-
581int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)-
582{-
583 if (stopped) {
stoppedDescription
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
584 if (!(opts & OPENSSL_INIT_BASE_ONLY))
!(opts & 0x00040000L)Description
TRUEnever evaluated
FALSEnever evaluated
0
585 CRYPTOerr(CRYPTO_F_OPENSSL_INIT_CRYPTO, ERR_R_INIT_FAIL);
never executed: ERR_put_error(15,(116),((6|64)),__FILE__,585);
0
586 return 0;
never executed: return 0;
0
587 }-
588-
589 if (!RUN_ONCE(&base, ossl_init_base))
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
CRYPTO_THREAD_...it_base_ossl_)Description
TRUEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEnever evaluated
0-3921451
590 return 0;
never executed: return 0;
0
591-
592 if (!(opts & OPENSSL_INIT_BASE_ONLY)
!(opts & 0x00040000L)Description
TRUEevaluated 131367 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 3790084 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
131367-3790084
593 && !RUN_ONCE(&load_crypto_nodelete,
CRYPTO_THREAD_...odelete_ossl_)Description
TRUEevaluated 131367 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 131367 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-131367
594 ossl_init_load_crypto_nodelete))-
595 return 0;
never executed: return 0;
0
596-
597 if ((opts & OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS)
(opts & 0x00000001L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
598 && !RUN_ONCE(&load_crypto_strings,
CRYPTO_THREAD_...strings_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
599 ossl_init_no_load_crypto_strings))-
600 return 0;
never executed: return 0;
0
601-
602 if ((opts & OPENSSL_INIT_LOAD_CRYPTO_STRINGS)
(opts & 0x00000002L)Description
TRUEevaluated 2085 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEevaluated 3919366 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
2085-3919366
603 && !RUN_ONCE(&load_crypto_strings, ossl_init_load_crypto_strings))
CRYPTO_THREAD_...strings_ossl_)Description
TRUEevaluated 2085 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 2085 times by 11 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-2085
604 return 0;
never executed: return 0;
0
605-
606 if ((opts & OPENSSL_INIT_NO_ADD_ALL_CIPHERS)
(opts & 0x00000010L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
607 && !RUN_ONCE(&add_all_ciphers, ossl_init_no_add_algs))
CRYPTO_THREAD_...dd_algs_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
608 return 0;
never executed: return 0;
0
609-
610 if ((opts & OPENSSL_INIT_ADD_ALL_CIPHERS)
(opts & 0x00000004L)Description
TRUEevaluated 62578 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3858873 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
62578-3858873
611 && !RUN_ONCE(&add_all_ciphers, ossl_init_add_all_ciphers))
CRYPTO_THREAD_...ciphers_ossl_)Description
TRUEevaluated 62578 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 62578 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-62578
612 return 0;
never executed: return 0;
0
613-
614 if ((opts & OPENSSL_INIT_NO_ADD_ALL_DIGESTS)
(opts & 0x00000020L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
615 && !RUN_ONCE(&add_all_digests, ossl_init_no_add_algs))
CRYPTO_THREAD_...dd_algs_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
616 return 0;
never executed: return 0;
0
617-
618 if ((opts & OPENSSL_INIT_ADD_ALL_DIGESTS)
(opts & 0x00000008L)Description
TRUEevaluated 73557 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3847894 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
73557-3847894
619 && !RUN_ONCE(&add_all_digests, ossl_init_add_all_digests))
CRYPTO_THREAD_...digests_ossl_)Description
TRUEevaluated 73557 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 73557 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-73557
620 return 0;
never executed: return 0;
0
621-
622 if ((opts & OPENSSL_INIT_ATFORK)
(opts & 0x00020000L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
623 && !openssl_init_fork_handlers())
!openssl_init_fork_handlers()Description
TRUEnever evaluated
FALSEnever evaluated
0
624 return 0;
never executed: return 0;
0
625-
626 if ((opts & OPENSSL_INIT_NO_LOAD_CONFIG)
(opts & 0x00000080L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
627 && !RUN_ONCE(&config, ossl_init_no_config))
CRYPTO_THREAD_..._config_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
628 return 0;
never executed: return 0;
0
629-
630 if (opts & OPENSSL_INIT_LOAD_CONFIG) {
opts & 0x00000040LDescription
TRUEevaluated 18826 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3902625 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
18826-3902625
631 int ret;-
632 CRYPTO_THREAD_write_lock(init_lock);-
633 appname = (settings == NULL) ? NULL : settings->appname;
(settings == ((void *)0) )Description
TRUEevaluated 18826 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-18826
634 ret = RUN_ONCE(&config, ossl_init_config);
CRYPTO_THREAD_..._config_ossl_)Description
TRUEevaluated 18826 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-18826
635 CRYPTO_THREAD_unlock(init_lock);-
636 if (!ret)
!retDescription
TRUEnever evaluated
FALSEevaluated 18826 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-18826
637 return 0;
never executed: return 0;
0
638 }
executed 18826 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
18826
639-
640 if ((opts & OPENSSL_INIT_ASYNC)
(opts & 0x00000100L)Description
TRUEevaluated 39 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3921412 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
39-3921412
641 && !RUN_ONCE(&async, ossl_init_async))
CRYPTO_THREAD_...t_async_ossl_)Description
TRUEevaluated 39 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 39 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-39
642 return 0;
never executed: return 0;
0
643-
644#ifndef OPENSSL_NO_ENGINE-
645 if ((opts & OPENSSL_INIT_ENGINE_OPENSSL)
(opts & 0x00000800L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
646 && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl))
CRYPTO_THREAD_...openssl_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
647 return 0;
never executed: return 0;
0
648# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_DEVCRYPTOENG)-
649 if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)-
650 && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))-
651 return 0;-
652# endif-
653# ifndef OPENSSL_NO_RDRAND-
654 if ((opts & OPENSSL_INIT_ENGINE_RDRAND)
(opts & 0x00000200L)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3917703 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3748-3917703
655 && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand))
CRYPTO_THREAD_..._rdrand_ossl_)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3748
656 return 0;
never executed: return 0;
0
657# endif-
658 if ((opts & OPENSSL_INIT_ENGINE_DYNAMIC)
(opts & 0x00000400L)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3917703 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3748-3917703
659 && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic))
CRYPTO_THREAD_...dynamic_ossl_)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3748
660 return 0;
never executed: return 0;
0
661# ifndef OPENSSL_NO_STATIC_ENGINE-
662# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)-
663 if ((opts & OPENSSL_INIT_ENGINE_PADLOCK)-
664 && !RUN_ONCE(&engine_padlock, ossl_init_engine_padlock))-
665 return 0;-
666# endif-
667# if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG)-
668 if ((opts & OPENSSL_INIT_ENGINE_CAPI)-
669 && !RUN_ONCE(&engine_capi, ossl_init_engine_capi))-
670 return 0;-
671# endif-
672# if !defined(OPENSSL_NO_AFALGENG)-
673 if ((opts & OPENSSL_INIT_ENGINE_AFALG)-
674 && !RUN_ONCE(&engine_afalg, ossl_init_engine_afalg))-
675 return 0;-
676# endif-
677# endif-
678 if (opts & (OPENSSL_INIT_ENGINE_ALL_BUILTIN
opts & ((0x000...| 0x00008000L)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3917703 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3748-3917703
679 | OPENSSL_INIT_ENGINE_OPENSSL
opts & ((0x000...| 0x00008000L)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3917703 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3748-3917703
680 | OPENSSL_INIT_ENGINE_AFALG)) {
opts & ((0x000...| 0x00008000L)Description
TRUEevaluated 3748 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3917703 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3748-3917703
681 ENGINE_register_all_complete();-
682 }
executed 3748 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
3748
683#endif-
684-
685#ifndef OPENSSL_NO_COMP-
686 if ((opts & OPENSSL_INIT_ZLIB)
(opts & 0x00010000L)Description
TRUEnever evaluated
FALSEevaluated 3921451 times by 12 tests
Evaluated by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
0-3921451
687 && !RUN_ONCE(&zlib, ossl_init_zlib))
CRYPTO_THREAD_...it_zlib_ossl_)Description
TRUEnever evaluated
FALSEnever evaluated
!(CRYPTO_THREA...ossl_ret_ : 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
688 return 0;
never executed: return 0;
0
689#endif-
690-
691 return 1;
executed 3921451 times by 12 tests: return 1;
Executed by:
  • asn1_internal_test
  • chacha_internal_test
  • ctype_internal_test
  • curve448_internal_test
  • libcrypto.so.1.1
  • modes_internal_test
  • poly1305_internal_test
  • rdrand_sanitytest
  • siphash_internal_test
  • sm2_internal_test
  • sm4_internal_test
  • x509_internal_test
3921451
692}-
693-
694int OPENSSL_atexit(void (*handler)(void))-
695{-
696 OPENSSL_INIT_STOP *newhand;-
697-
698#if !defined(OPENSSL_NO_DSO) && !defined(OPENSSL_USE_NODELETE)-
699 {-
700 union {-
701 void *sym;-
702 void (*func)(void);-
703 } handlersym;-
704-
705 handlersym.func = handler;-
706# ifdef DSO_WIN32-
707 {-
708 HMODULE handle = NULL;-
709 BOOL ret;-
710-
711 /*-
712 * We don't use the DSO route for WIN32 because there is a better-
713 * way-
714 */-
715 ret = GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS-
716 | GET_MODULE_HANDLE_EX_FLAG_PIN,-
717 handlersym.sym, &handle);-
718-
719 if (!ret)-
720 return 0;-
721 }-
722# else-
723 /*-
724 * Deliberately leak a reference to the handler. This will force the-
725 * library/code containing the handler to remain loaded until we run the-
726 * atexit handler. If -znodelete has been used then this is-
727 * unnecessary.-
728 */-
729 {-
730 DSO *dso = NULL;-
731-
732 ERR_set_mark();-
733 dso = DSO_dsobyaddr(handlersym.sym, DSO_FLAG_NO_UNLOAD_ON_FREE);-
734# ifdef OPENSSL_INIT_DEBUG-
735 fprintf(stderr,-
736 "OPENSSL_INIT: OPENSSL_atexit: obtained DSO reference? %s\n",-
737 (dso == NULL ? "No!" : "Yes."));-
738 /* See same code above in ossl_init_base() for an explanation. */-
739# endif-
740 DSO_free(dso);-
741 ERR_pop_to_mark();-
742 }-
743# endif-
744 }-
745#endif-
746-
747 if ((newhand = OPENSSL_malloc(sizeof(*newhand))) == NULL) {
(newhand = CRY...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1958 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1958
748 CRYPTOerr(CRYPTO_F_OPENSSL_ATEXIT, ERR_R_MALLOC_FAILURE);-
749 return 0;
never executed: return 0;
0
750 }-
751-
752 newhand->handler = handler;-
753 newhand->next = stop_handlers;-
754 stop_handlers = newhand;-
755-
756 return 1;
executed 1958 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1958
757}-
758-
759#ifdef OPENSSL_SYS_UNIX-
760/*-
761 * The following three functions are for OpenSSL developers. This is-
762 * where we set/reset state across fork (called via pthread_atfork when-
763 * it exists, or manually by the application when it doesn't).-
764 *-
765 * WARNING! If you put code in either OPENSSL_fork_parent or-
766 * OPENSSL_fork_child, you MUST MAKE SURE that they are async-signal--
767 * safe. See this link, for example:-
768 * http://man7.org/linux/man-pages/man7/signal-safety.7.html-
769 */-
770-
771void OPENSSL_fork_prepare(void)-
772{-
773}-
774-
775void OPENSSL_fork_parent(void)-
776{-
777}-
778-
779void OPENSSL_fork_child(void)-
780{-
781 rand_fork();-
782}
never executed: end of block
0
783#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2