Fuzz introspector: ssl_ctx_api
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Fuzz blockers

The followings are the branches where fuzzer fails to bypass.

Unique non-covered Complexity Unique Reachable Complexities Unique Reachable Functions All non-covered Complexity All Reachable Complexity Function Name Function Callsite Blocked Branch
168 521 3 :

['ERR_put_error', 'ERR_add_error_data', 'ASN1_item_ex_free']

168 521 asn1_item_ex_d2i call site: 00000 /src/boringssl/crypto/asn1/tasn_dec.c:269
130 166 6 :

['crypto_buffer_free_object', 'CRYPTO_refcount_inc', 'lh_CRYPTO_BUFFER_retrieve', 'CRYPTO_MUTEX_lock_write', 'CRYPTO_MUTEX_unlock_write', 'lh_CRYPTO_BUFFER_insert']

130 166 crypto_buffer_new call site: 00000 /src/boringssl/crypto/pool/pool.c:132
129 147 4 :

['lh_CRYPTO_BUFFER_delete', 'lh_CRYPTO_BUFFER_retrieve', 'CRYPTO_MUTEX_lock_write', 'CRYPTO_MUTEX_unlock_write']

129 174 CRYPTO_BUFFER_free call site: 00000 /src/boringssl/crypto/pool/pool.c:207
110 110 6 :

['bssl::DC::Dup()', 'std::__1::unique_ptr ::operator bool() const', 'std::__1::unique_ptr ::operator->() const', 'std::__1::unique_ptr ::operator=(std::__1::unique_ptr &&)', 'std::__1::unique_ptr ::~unique_ptr()', 'std::__1::unique_ptr ::unique_ptr (decltype(nullptr))']

110 125 bssl::ssl_cert_dup(bssl::CERT*) call site: 00000 /src/boringssl/ssl/ssl_cert.cc:182
106 106 1 :

['ASN1_STRING_copy']

106 106 asn1_string_canon call site: 00000 /src/boringssl/crypto/x509/x_name.c:423
89 147 2 :

['ERR_put_error', 'CBS_parse_generalized_time']

367 616 asn1_ex_c2i call site: 00000 /src/boringssl/crypto/asn1/tasn_dec.c:883
76 76 4 :

['std::__1::unique_ptr ::reset(char*)', 'std::__1::unique_ptr ::get() const', 'bool std::__1::operator== (std::__1::unique_ptr const&, decltype(nullptr))', 'OPENSSL_strdup']

76 91 SSL_new call site: 00202 /src/boringssl/ssl/ssl_lib.cc:671
48 106 2 :

['OBJ_obj2nid', 'ERR_put_error']

48 106 asn1_do_adb call site: 00000 /src/boringssl/crypto/asn1/tasn_utl.c:219
34 34 3 :

['CRYPTO_STATIC_MUTEX_unlock_read', 'lh_ASN1_OBJECT_retrieve', 'CRYPTO_STATIC_MUTEX_lock_read']

34 92 OBJ_nid2obj call site: 00000 /src/boringssl/crypto/obj/obj.c:345
32 32 3 :

['CRYPTO_atomic_load_u32.2804', 'CRYPTO_get_ex_data', 'sk_void_free']

32 32 CRYPTO_free_ex_data call site: 00000 /src/boringssl/crypto/ex_data.c:212
32 32 1 :

['bn_mul_add_words']

32 32 bn_mul_normal call site: 00000 /src/boringssl/crypto/fipsmodule/bn/mul.c:99
22 22 2 :

['handle_cpu_env', 'strchr']

22 22 OPENSSL_cpuid_setup call site: 00000 /src/boringssl/crypto/cpu_intel.c:265

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 TLS_method [function] [call site] 00001
1 SSL_CTX_new [function] [call site] 00002
2 ERR_put_error [function] [call site] 00003
3 err_get_state [function] [call site] 00004
4 CRYPTO_get_thread_local [function] [call site] 00005
5 CRYPTO_once [function] [call site] 00006
6 pthread_once [call site] 00007
6 abort [call site] 00008
5 pthread_getspecific [call site] 00009
4 OPENSSL_memset [function] [call site] 00010
4 CRYPTO_set_thread_local [function] [call site] 00011
5 CRYPTO_once [function] [call site] 00012
5 pthread_getspecific [call site] 00013
5 OPENSSL_memset [function] [call site] 00014
5 pthread_setspecific [call site] 00015
5 pthread_mutex_lock [call site] 00016
5 pthread_mutex_unlock [call site] 00017
4 err_state_free [function] [call site] 00018
5 err_clear [function] [call site] 00019
6 OPENSSL_memset [function] [call site] 00020
3 __errno_location [call site] 00021
3 err_clear [function] [call site] 00022
2 std::__1::unique_ptr bssl::MakeUnique (ssl_method_st const*&) [function] [call site] 00023
3 ssl_ctx_st* bssl::New (ssl_method_st const*&) [function] [call site] 00024
4 OPENSSL_malloc [function] [call site] 00025
5 __assert_fail [call site] 00026
5 __assert_fail [call site] 00027
5 OPENSSL_memory_alloc [call site] 00028
5 ERR_put_error [function] [call site] 00029
4 ssl_ctx_st::ssl_ctx_st(ssl_method_st const*) [function] [call site] 00030
5 bssl::Array ::Array() [function] [call site] 00031
5 CRYPTO_MUTEX_init [function] [call site] 00032
6 pthread_rwlock_init [call site] 00033
6 abort [call site] 00034
5 CRYPTO_new_ex_data [function] [call site] 00035
5 bssl::Array ::~Array() [function] [call site] 00036
6 bssl::Array ::Reset() [function] [call site] 00037
7 bssl::Array ::Reset(unsigned short*, unsigned long) [function] [call site] 00038
8 OPENSSL_free [function] [call site] 00039
9 OPENSSL_memory_free [call site] 00040
9 OPENSSL_cleanse [function] [call site] 00041
10 OPENSSL_memset [function] [call site] 00042
9 sdallocx [call site] 00043
6 __clang_call_terminate [call site] 00044
7 __cxa_begin_catch [call site] 00045
2 std::__1::unique_ptr bssl::MakeUnique (bssl::SSL_X509_METHOD const* const&) [function] [call site] 00046
2 lh_SSL_SESSION_new(unsigned int (*)(ssl_session_st const*), int (*)(ssl_session_st const*, ssl_session_st const*)) [function] [call site] 00047
3 OPENSSL_lh_new [function] [call site] 00048
4 OPENSSL_malloc [function] [call site] 00049
4 OPENSSL_memset [function] [call site] 00050
4 OPENSSL_malloc [function] [call site] 00051
4 OPENSSL_free [function] [call site] 00052
4 OPENSSL_memset [function] [call site] 00053
2 sk_CRYPTO_BUFFER_new_null [function] [call site] 00054
3 sk_new_null [function] [call site] 00055
4 sk_new [function] [call site] 00056
5 OPENSSL_malloc [function] [call site] 00057
5 OPENSSL_memset [function] [call site] 00058
5 OPENSSL_malloc [function] [call site] 00059
5 OPENSSL_memset [function] [call site] 00060
5 OPENSSL_free [function] [call site] 00061
2 SSL_CTX_set_strict_cipher_list [function] [call site] 00062
3 EVP_has_aes_hardware [function] [call site] 00063
4 hwaes_capable [function] [call site] 00064
5 CRYPTO_is_AESNI_capable [function] [call site] 00065
4 crypto_gcm_clmul_enabled [function] [call site] 00066
5 CRYPTO_is_PCLMUL_capable [function] [call site] 00067
3 bssl::ssl_create_cipher_list(std::__1::unique_ptr *, bool, char const*, bool) [function] [call site] 00068
4 SSL_get_cipher_by_value [function] [call site] 00069
5 ssl_cipher_id_cmp_void(void const*, void const*) [function] [call site] 00071
6 ssl_cipher_id_cmp(ssl_cipher_st const*, ssl_cipher_st const*) [function] [call site] 00072
4 __assert_fail [call site] 00073
4 SSL_get_cipher_by_value [function] [call site] 00074
4 __assert_fail [call site] 00075
4 SSL_get_cipher_by_value [function] [call site] 00076
4 __assert_fail [call site] 00077
4 SSL_get_cipher_by_value [function] [call site] 00078
4 __assert_fail [call site] 00079
4 __assert_fail [call site] 00080
4 strncmp [call site] 00081
4 bssl::ssl_cipher_process_rulestr(char const*, bssl::cipher_order_st**, bssl::cipher_order_st**, bool) [function] [call site] 00082
5 OPENSSL_isalnum [function] [call site] 00083
6 OPENSSL_isalpha [function] [call site] 00084
5 ERR_put_error [function] [call site] 00085
5 ERR_put_error [function] [call site] 00086
5 bssl::is_cipher_list_separator(char, bool) [function] [call site] 00087
5 bssl::cipher_alias_st::cipher_alias_st() [function] [call site] 00088
5 OPENSSL_isalnum [function] [call site] 00089
5 ERR_put_error [function] [call site] 00090
5 bssl::rule_equals(char const*, char const*, unsigned long) [function] [call site] 00091
6 strncmp [call site] 00092
5 bssl::rule_equals(char const*, char const*, unsigned long) [function] [call site] 00093
5 bssl::rule_equals(char const*, char const*, unsigned long) [function] [call site] 00094
5 ERR_put_error [function] [call site] 00095
5 strncmp [call site] 00096
5 ERR_put_error [function] [call site] 00097
5 bssl::ssl_cipher_strength_sort(bssl::cipher_order_st**, bssl::cipher_order_st**) [function] [call site] 00098
6 SSL_CIPHER_get_bits [function] [call site] 00099
7 __assert_fail [call site] 00100
6 SSL_CIPHER_get_bits [function] [call site] 00101
6 bssl::Array ::Array() [function] [call site] 00102
6 bssl::Array ::Init(unsigned long) [function] [call site] 00103
7 bssl::Array ::Reset() [function] [call site] 00104
7 ERR_put_error [function] [call site] 00105
7 OPENSSL_malloc [function] [call site] 00106
6 bssl::Array ::~Array() [function] [call site] 00107
6 bssl::Array ::data() [function] [call site] 00108
6 OPENSSL_memset(void*, int, unsigned long) [function] [call site] 00109
6 SSL_CIPHER_get_bits [function] [call site] 00110
6 bssl::Array ::operator[](unsigned long) [function] [call site] 00111
6 bssl::Array ::operator[](unsigned long) [function] [call site] 00112
6 bssl::ssl_cipher_apply_rule(unsigned int, bssl::cipher_alias_st const*, int, int, bool, bssl::cipher_order_st**, bssl::cipher_order_st**) [function] [call site] 00113
7 SSL_CIPHER_get_bits [function] [call site] 00114
7 SSL_CIPHER_get_min_version [function] [call site] 00115
7 bssl::ssl_cipher_is_deprecated(ssl_cipher_st const*) [function] [call site] 00116
7 bssl::ll_append_tail(bssl::cipher_order_st**, bssl::cipher_order_st*, bssl::cipher_order_st**) [function] [call site] 00117
7 bssl::ll_append_tail(bssl::cipher_order_st**, bssl::cipher_order_st*, bssl::cipher_order_st**) [function] [call site] 00118
7 bssl::ll_append_head(bssl::cipher_order_st**, bssl::cipher_order_st*, bssl::cipher_order_st**) [function] [call site] 00119
5 bssl::is_cipher_list_separator(char, bool) [function] [call site] 00120
5 bssl::ssl_cipher_apply_rule(unsigned int, bssl::cipher_alias_st const*, int, int, bool, bssl::cipher_order_st**, bssl::cipher_order_st**) [function] [call site] 00121
5 ERR_put_error [function] [call site] 00122
4 bssl::ssl_cipher_process_rulestr(char const*, bssl::cipher_order_st**, bssl::cipher_order_st**, bool) [function] [call site] 00123
4 sk_SSL_CIPHER_new_null [function] [call site] 00124
5 sk_new_null [function] [call site] 00125
4 bssl::Array ::Array() [function] [call site] 00126
4 bssl::Array ::Init(unsigned long) [function] [call site] 00127
4 sk_SSL_CIPHER_push [function] [call site] 00128
4 bssl::Array ::operator[](unsigned long) [function] [call site] 00129
4 std::__1::unique_ptr bssl::MakeUnique () [function] [call site] 00130
4 decltype (MakeConstSpan(({parm#1}.data)(), ({parm#1}.size)())) bssl::MakeConstSpan >(bssl::Array const&) [function] [call site] 00131
5 bssl::Array ::data() const [function] [call site] 00132
5 bssl::Span bssl::MakeConstSpan (bool const*, unsigned long) [function] [call site] 00133
6 bssl::Span ::Span(bool const*, unsigned long) [function] [call site] 00134
4 bssl::SSLCipherPreferenceList::Init(std::__1::unique_ptr , bssl::Span ) [function] [call site] 00135
5 sk_SSL_CIPHER_num [function] [call site] 00136
5 bssl::Span ::size() const [function] [call site] 00137
5 ERR_put_error [function] [call site] 00138
5 bssl::Array ::Array() [function] [call site] 00139
5 bssl::Array ::CopyFrom(bssl::Span ) [function] [call site] 00140
6 bssl::Span ::size() const [function] [call site] 00141
6 bssl::Array ::Init(unsigned long) [function] [call site] 00142
6 bssl::Span ::data() const [function] [call site] 00143
6 OPENSSL_memcpy(void*, void const*, unsigned long) [function] [call site] 00144
5 bssl::Array ::~Array() [function] [call site] 00145
5 bssl::Array ::Release(bool**, unsigned long*) [function] [call site] 00146
4 sk_SSL_CIPHER_num [function] [call site] 00147
4 ERR_put_error [function] [call site] 00148
4 bssl::Array ::~Array() [function] [call site] 00149
2 SSL_CTX_set_max_proto_version [function] [call site] 00150
3 bssl::set_max_version(bssl::SSL_PROTOCOL_METHOD const*, unsigned short*, unsigned short) [function] [call site] 00151
4 bssl::set_version_bound(bssl::SSL_PROTOCOL_METHOD const*, unsigned short*, unsigned short) [function] [call site] 00152
5 bssl::api_version_to_wire(unsigned short*, unsigned short) [function] [call site] 00153
6 bssl::ssl_protocol_version_from_wire(unsigned short*, unsigned short) [function] [call site] 00154
5 bssl::ssl_method_supports_version(bssl::SSL_PROTOCOL_METHOD const*, unsigned short) [function] [call site] 00155
6 bssl::get_method_versions(bssl::SSL_PROTOCOL_METHOD const*) [function] [call site] 00156
7 bssl::Span ::Span<2ul>(unsigned short const (&) [2ul]) [function] [call site] 00157
8 bssl::Span ::Span(unsigned short const*, unsigned long) [function] [call site] 00158
7 bssl::Span ::Span<4ul>(unsigned short const (&) [4ul]) [function] [call site] 00159
6 bssl::Span ::begin() const [function] [call site] 00160
5 ERR_put_error [function] [call site] 00161
2 SSL_CTX_set_min_proto_version [function] [call site] 00162
3 bssl::set_min_version(bssl::SSL_PROTOCOL_METHOD const*, unsigned short*, unsigned short) [function] [call site] 00163
4 bssl::set_version_bound(bssl::SSL_PROTOCOL_METHOD const*, unsigned short*, unsigned short) [function] [call site] 00164
2 ERR_put_error [function] [call site] 00165
1 SSL_new [function] [call site] 00169
2 ERR_put_error [function] [call site] 00170
2 std::__1::unique_ptr bssl::MakeUnique (ssl_ctx_st*&) [function] [call site] 00171
2 std::__1::unique_ptr bssl::MakeUnique (ssl_st*&&) [function] [call site] 00172
2 bssl::ssl_cert_dup(bssl::CERT*) [function] [call site] 00173
3 std::__1::unique_ptr bssl::MakeUnique (bssl::SSL_X509_METHOD const*&) [function] [call site] 00174
3 sk_CRYPTO_BUFFER_deep_copy [function] [call site] 00175
4 sk_CRYPTO_BUFFER_call_copy_func [function] [call site] 00176
3 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00177
4 bssl::UpRef(evp_pkey_st*) [function] [call site] 00178
5 EVP_PKEY_up_ref [function] [call site] 00179
6 CRYPTO_refcount_inc [function] [call site] 00180
7 CRYPTO_atomic_load_u32 [function] [call site] 00181
7 CRYPTO_atomic_compare_exchange_weak_u32 [function] [call site] 00182
3 bssl::Span ::Span , void, bssl::Array >(bssl::Array const&) [function] [call site] 00183
4 bssl::Array ::data() const [function] [call site] 00184
3 bssl::Array ::CopyFrom(bssl::Span ) [function] [call site] 00185
3 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00186
4 bssl::UpRef(crypto_buffer_st*) [function] [call site] 00187
5 CRYPTO_BUFFER_up_ref [function] [call site] 00188
6 CRYPTO_refcount_inc [function] [call site] 00189
3 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00190
3 OPENSSL_memcpy(void*, void const*, unsigned long) [function] [call site] 00191
3 bssl::DC::Dup() [function] [call site] 00192
4 std::__1::unique_ptr bssl::MakeUnique () [function] [call site] 00193
4 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00194
4 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00195
3 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00196
2 bssl::Span ::Span , void, bssl::Array >(bssl::Array const&) [function] [call site] 00197
2 bssl::Array ::CopyFrom(bssl::Span ) [function] [call site] 00198
2 bssl::Span ::Span , void, bssl::Array >(bssl::Array const&) [function] [call site] 00199
2 bssl::Array ::CopyFrom(bssl::Span ) [function] [call site] 00200
2 bssl::Span ::Span , void, bssl::Array >(bssl::Array const&) [function] [call site] 00201
2 bssl::Array ::CopyFrom(bssl::Span ) [function] [call site] 00202
2 OPENSSL_strdup [function] [call site] 00203
3 strlen [call site] 00204
3 OPENSSL_malloc [function] [call site] 00205
3 OPENSSL_memcpy [function] [call site] 00206
2 bssl::UpRef(std::__1::unique_ptr const&) [function] [call site] 00207
1 ERR_clear_error [function] [call site] 00208
2 err_get_state [function] [call site] 00209
2 err_clear [function] [call site] 00210