Coverage Report

Created: 2018-08-29 13:53

/src/openssl/include/internal/thread_once.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 1995-2016 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 <openssl/crypto.h>
11
12
#define DEFINE_RUN_ONCE(init)                   \
13
    static int init(void);                     \
14
    int init##_ossl_ret_ = 0;                   \
15
    void init##_ossl_(void)                     \
16
0
    {                                           \
17
0
        init##_ossl_ret_ = init();              \
18
0
    }                                           \
19
    static int init(void)
20
#define DECLARE_RUN_ONCE(init)                  \
21
    extern int init##_ossl_ret_;                \
22
    void init##_ossl_(void);
23
24
#define DEFINE_RUN_ONCE_STATIC(init)            \
25
    static int init(void);                     \
26
    static int init##_ossl_ret_ = 0;            \
27
    static void init##_ossl_(void)              \
28
72
    {                                           \
29
72
        init##_ossl_ret_ = init();              \
30
72
    }                                           \
Unexecuted instantiation: ssl_cert.c:ssl_x509_store_ctx_init_ossl_
Unexecuted instantiation: ssl_ciph.c:do_load_builtin_compressions_ossl_
Unexecuted instantiation: ssl_init.c:ossl_init_ssl_base_ossl_
Unexecuted instantiation: ssl_init.c:ossl_init_no_load_ssl_strings_ossl_
Unexecuted instantiation: ssl_init.c:ossl_init_load_ssl_strings_ossl_
Unexecuted instantiation: b_addr.c:do_bio_lookup_init_ossl_
Unexecuted instantiation: bio_meth.c:do_bio_type_init_ossl_
err.c:do_err_strings_init_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
err.c:err_do_init_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
ex_data.c:do_ex_data_init_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
init.c:ossl_init_base_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
init.c:ossl_init_load_crypto_nodelete_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
Unexecuted instantiation: init.c:ossl_init_no_load_crypto_strings_ossl_
init.c:ossl_init_load_crypto_strings_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
Unexecuted instantiation: init.c:ossl_init_no_add_algs_ossl_
init.c:ossl_init_add_all_ciphers_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
Unexecuted instantiation: init.c:ossl_init_add_all_digests_ossl_
Unexecuted instantiation: init.c:ossl_init_no_config_ossl_
Unexecuted instantiation: init.c:ossl_init_config_ossl_
Unexecuted instantiation: init.c:ossl_init_async_ossl_
Unexecuted instantiation: init.c:ossl_init_engine_openssl_ossl_
Unexecuted instantiation: init.c:ossl_init_engine_rdrand_ossl_
Unexecuted instantiation: init.c:ossl_init_engine_dynamic_ossl_
Unexecuted instantiation: init.c:ossl_init_engine_padlock_ossl_
Unexecuted instantiation: init.c:ossl_init_engine_afalg_ossl_
Unexecuted instantiation: init.c:ossl_init_zlib_ossl_
o_names.c:o_names_init_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
Unexecuted instantiation: drbg_lib.c:do_rand_drbg_init_ossl_
rand_lib.c:do_rand_init_ossl_
Line
Count
Source
28
8
    {                                           \
29
8
        init##_ossl_ret_ = init();              \
30
8
    }                                           \
Unexecuted instantiation: store_init.c:do_store_init_ossl_
Unexecuted instantiation: store_register.c:do_registry_init_ossl_
31
    static int init(void)
32
33
/*
34
 * RUN_ONCE - use CRYPTO_THREAD_run_once, and check if the init succeeded
35
 * @once: pointer to static object of type CRYPTO_ONCE
36
 * @init: function name that was previously given to DEFINE_RUN_ONCE,
37
 *        DEFINE_RUN_ONCE_STATIC or DECLARE_RUN_ONCE.  This function
38
 *        must return 1 for success or 0 for failure.
39
 *
40
 * The return value is 1 on success (*) or 0 in case of error.
41
 *
42
 * (*) by convention, since the init function must return 1 on success.
43
 */
44
#define RUN_ONCE(once, init)                                            \
45
7.06M
    (CRYPTO_THREAD_run_once(once, init##_ossl_) ? init##_ossl_ret_ : 0)