Fuzz introspector: hb-set-fuzzer
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
0 2 1 :

['hb_vector_t ::shrink_vector(unsigned int)']

0 2 hb_vector_t ::resize(int,bool,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:426
0 0 None 0 62 hb_bit_set_t::page_for(unsignedint,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-bit-set.hh:917
0 0 None 0 7 hb_bit_page_t*hb_vector_t ::realloc_vector (unsignedint) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:254
0 0 None 0 7 hb_bit_set_t::page_map_t*hb_vector_t ::realloc_vector (unsignedint) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:254
0 0 None 0 0 boolhb_object_destroy (hb_set_t*) call site: 00000 /work/build/../../src/harfbuzz/src/hb-object.hh:291
0 0 None 0 0 hb_vector_t ::alloc(unsignedint,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:373
0 0 None 0 0 hb_vector_t ::alloc(unsignedint,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:407
0 0 None 0 0 hb_vector_t ::alloc(unsignedint,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:373
0 0 None 0 0 hb_vector_t ::alloc(unsignedint,bool) call site: 00000 /work/build/../../src/harfbuzz/src/hb-vector.hh:407

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 _fuzzing_alloc_state(unsigned char const*, unsigned long) [function] [call site] 00001
1 create_set(unsigned int const*, int) [function] [call site] 00002
2 hb_set_create [function] [call site] 00003
3 hb_set_t* hb_object_create () [function] [call site] 00004
4 hb_calloc_impl [function] [call site] 00005
5 calloc [call site] 00007
4 hb_set_t::hb_set_t() [function] [call site] 00008
5 hb_sparseset_t ::hb_sparseset_t() [function] [call site] 00009
6 hb_object_header_t::hb_object_header_t() [function] [call site] 00010
7 hb_reference_count_t::hb_reference_count_t() [function] [call site] 00011
8 hb_atomic_int_t::hb_atomic_int_t() [function] [call site] 00012
7 hb_atomic_int_t::hb_atomic_int_t(int) [function] [call site] 00013
7 hb_atomic_ptr_t ::hb_atomic_ptr_t() [function] [call site] 00014
6 hb_bit_set_invertible_t::hb_bit_set_invertible_t() [function] [call site] 00015
7 hb_bit_set_t::hb_bit_set_t() [function] [call site] 00016
8 hb_atomic_int_t::hb_atomic_int_t(int) [function] [call site] 00017
8 hb_vector_t ::hb_vector_t() [function] [call site] 00018
6 hb_sparseset_t ::init() [function] [call site] 00019
7 void hb_object_init >(hb_sparseset_t *) [function] [call site] 00020
8 hb_reference_count_t::init(int) [function] [call site] 00021
9 hb_atomic_int_t::operator=(int) [function] [call site] 00022
10 hb_atomic_int_t::set_relaxed(int) [function] [call site] 00023
8 hb_atomic_int_t::operator=(int) [function] [call site] 00024
8 hb_atomic_ptr_t ::init(hb_user_data_array_t*) [function] [call site] 00025
9 hb_atomic_ptr_t ::set_relaxed(hb_user_data_array_t*) [function] [call site] 00026
7 hb_bit_set_invertible_t::init() [function] [call site] 00027
8 hb_bit_set_t::init() [function] [call site] 00028
9 hb_atomic_int_t::operator=(int) [function] [call site] 00029
9 hb_vector_t ::init() [function] [call site] 00030
9 hb_vector_t ::init() [function] [call site] 00031
4 void hb_object_init (hb_set_t*) [function] [call site] 00032
4 void hb_object_trace (hb_set_t const*, char const*) [function] [call site] 00033
5 hb_reference_count_t::get_relaxed() const [function] [call site] 00034
6 hb_atomic_int_t::operator int() const [function] [call site] 00035
7 hb_atomic_int_t::get_relaxed() const [function] [call site] 00036
5 void _hb_debug_msg<0>(char const*, void const*, char const*, bool, unsigned int, int, char const*, ...) [function] [call site] 00037
3 hb_set_get_empty [function] [call site] 00038
4 NullHelper ::get_null() [function] [call site] 00039
5 Null ::get_null() [function] [call site] 00040
2 hb_set_add [function] [call site] 00041
3 hb_sparseset_t ::add(unsigned int) [function] [call site] 00042
4 hb_bit_set_invertible_t::add(unsigned int) [function] [call site] 00043
5 hb_bit_set_t::del(unsigned int) [function] [call site] 00044
6 hb_bit_set_t::page_for(unsigned int, bool) [function] [call site] 00045
7 hb_bit_set_t::get_major(unsigned int) const [function] [call site] 00046
7 hb_atomic_int_t::operator int() const [function] [call site] 00047
7 bool hb_vector_t ::bfind (hb_bit_set_t::page_map_t const&, unsigned int*, hb_not_found_t, unsigned int) const [function] [call site] 00048
8 hb_vector_t ::as_array() const [function] [call site] 00049
9 hb_array_t hb_array (hb_bit_set_t::page_map_t*, unsigned int) [function] [call site] 00050
10 hb_array_t ::hb_array_t(hb_bit_set_t::page_map_t*, unsigned int) [function] [call site] 00051
8 bool hb_sorted_array_t ::bfind (hb_bit_set_t::page_map_t const&, unsigned int*, hb_not_found_t, unsigned int) const [function] [call site] 00052
9 bool hb_sorted_array_t ::bsearch_impl (hb_bit_set_t::page_map_t const&, unsigned int*) const [function] [call site] 00053
10 bool hb_bsearch_impl (unsigned int*, hb_bit_set_t::page_map_t const&, hb_bit_set_t::page_map_t const*, unsigned long, unsigned long, int (*)(void const*, void const*)) [function] [call site] 00054
7 hb_bit_set_t::resize(unsigned int, bool, bool) [function] [call site] 00055
8 hb_vector_t ::resize(int, bool, bool) [function] [call site] 00056
9 hb_vector_t ::alloc(unsigned int, bool) [function] [call site] 00057
10 hb_vector_t ::in_error() const [function] [call site] 00058
10 decltype (({parm#1}>={parm#2})?{parm#1} : {parm#2}) $_0::operator() (unsigned int&, unsigned int&) const [function] [call site] 00059
10 hb_vector_t ::in_error() const [function] [call site] 00060
10 hb_unsigned_mul_overflows(unsigned int, unsigned int, unsigned int*) [function] [call site] 00061
10 hb_bit_page_t* hb_vector_t ::realloc_vector (unsigned int) [function] [call site] 00062
11 hb_free_impl [function] [call site] 00063
11 hb_realloc_impl [function] [call site] 00064
12 fastrand [function] [call site] 00065
12 realloc [call site] 00066
9 void hb_vector_t ::grow_vector (unsigned int) [function] [call site] 00067
9 hb_vector_t ::shrink_vector(unsigned int) [function] [call site] 00068
8 hb_vector_t ::resize(int, bool, bool) [function] [call site] 00069
7 hb_bit_page_t::init0() [function] [call site] 00070
8 hb_vector_size_t ::init0() [function] [call site] 00071
9 unsigned int ARRAY_LENGTH (unsigned long long const (&) [8u]) [function] [call site] 00072
7 hb_atomic_int_t::operator=(int) [function] [call site] 00073
6 hb_bit_set_t::dirty() [function] [call site] 00074
6 hb_bit_page_t::del(unsigned int) [function] [call site] 00075
7 hb_bit_page_t::mask(unsigned int) [function] [call site] 00076
1 create_set(unsigned int const*, int) [function] [call site] 00077
1 hb_set_intersect [function] [call site] 00078
2 hb_sparseset_t ::intersect(hb_sparseset_t const&) [function] [call site] 00079
3 hb_bit_set_invertible_t::intersect(hb_bit_set_invertible_t const&) [function] [call site] 00080
4 void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&) [function] [call site] 00081
5 void hb_bit_set_t::process<$_15>($_15 const&, hb_bit_set_t const&) [function] [call site] 00082
6 decltype ({parm#1}|{parm#2}) $_15::operator() (int const&, int const&) const [function] [call site] 00083
6 hb_bit_set_t::process_(hb_vector_size_t (*)(hb_vector_size_t const&, hb_vector_size_t const&), bool, bool, hb_bit_set_t const&) [function] [call site] 00084
7 hb_bit_set_t::dirty() [function] [call site] 00085
7 hb_vector_t ::hb_vector_t() [function] [call site] 00086
7 hb_bit_set_t::allocate_compact_workspace(hb_vector_t &) [function] [call site] 00087
8 hb_vector_t ::resize_exact(int, bool) [function] [call site] 00088
9 hb_vector_t ::resize(int, bool, bool) [function] [call site] 00089
7 hb_vector_t ::operator[](int) [function] [call site] 00090
8 CrapHelper ::get_crap() [function] [call site] 00091
9 hb_bit_set_t::page_map_t& Crap () [function] [call site] 00092
10 NullHelper ::get_null() [function] [call site] 00093
7 hb_vector_t ::operator[](int) [function] [call site] 00094
7 hb_vector_t ::operator[](int) [function] [call site] 00095
7 hb_bit_set_t::compact(hb_vector_t &, unsigned int) [function] [call site] 00096
8 __assert_fail [call site] 00097
8 hb_vector_t ::writer() [function] [call site] 00098
9 hb_vector_t ::as_array() [function] [call site] 00099
10 hb_array_t hb_array (unsigned int*, unsigned int) [function] [call site] 00100
8 void hb_fill , unsigned int, (void*)0>(hb_array_t &&, unsigned int const&) [function] [call site] 00101
9 decltype (((hb_deref((hb_declval &>)())).iter)()) $_6::operator() &>(hb_array_t &) const [function] [call site] 00102
10 _ZNK3$_4clIR10hb_array_tIjEEEDTclsr3stdE7forwardIT_Efp_EEOS4_ [function] [call site] 00103
10 hb_iter_t , unsigned int&>::iter() const [function] [call site] 00104
11 hb_iter_t , unsigned int&>::thiz() const [function] [call site] 00105
9 hb_iter_t , unsigned int&>::operator*() [function] [call site] 00106
10 hb_iter_t , unsigned int&>::thiz() [function] [call site] 00107
8 hb_vector_t ::operator[](int) [function] [call site] 00108
8 hb_bit_set_t::compact_pages(hb_vector_t const&) [function] [call site] 00109
9 hb_vector_t ::operator[](int) const [function] [call site] 00110
10 NullHelper ::get_null() [function] [call site] 00111
9 hb_vector_t ::operator[](int) [function] [call site] 00112
9 hb_vector_t ::operator[](int) const [function] [call site] 00113
7 hb_bit_set_t::resize(unsigned int, bool, bool) [function] [call site] 00114
7 hb_bit_set_t::page_at(unsigned int) [function] [call site] 00115
8 __assert_fail [call site] 00116
7 hb_bit_set_t::page_at(unsigned int) const [function] [call site] 00117
8 __assert_fail [call site] 00118
7 hb_bit_set_t::page_at(unsigned int) const [function] [call site] 00119
7 __assert_fail [call site] 00120
7 hb_bit_set_t::resize(unsigned int, bool, bool) [function] [call site] 00121
7 hb_vector_t ::~hb_vector_t() [function] [call site] 00122
8 hb_vector_t ::fini() [function] [call site] 00123
9 hb_vector_t ::shrink_vector(unsigned int) [function] [call site] 00124
9 hb_free_impl [function] [call site] 00125
9 hb_vector_t ::init() [function] [call site] 00126
4 void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&) [function] [call site] 00127
4 void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&) [function] [call site] 00128
4 void hb_bit_set_invertible_t::process<$_17>($_17 const&, hb_bit_set_invertible_t const&) [function] [call site] 00129
1 hb_set_union [function] [call site] 00130
2 hb_sparseset_t ::union_(hb_sparseset_t const&) [function] [call site] 00131
3 hb_bit_set_invertible_t::union_(hb_bit_set_invertible_t const&) [function] [call site] 00132
4 void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&) [function] [call site] 00133
4 void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&) [function] [call site] 00134
4 void hb_bit_set_invertible_t::process<$_17>($_17 const&, hb_bit_set_invertible_t const&) [function] [call site] 00135
4 void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&) [function] [call site] 00136
1 hb_set_subtract [function] [call site] 00137
2 hb_sparseset_t ::subtract(hb_sparseset_t const&) [function] [call site] 00138
3 hb_bit_set_invertible_t::subtract(hb_bit_set_invertible_t const&) [function] [call site] 00139
4 void hb_bit_set_invertible_t::process<$_23>($_23 const&, hb_bit_set_invertible_t const&) [function] [call site] 00140
4 void hb_bit_set_invertible_t::process<$_17>($_17 const&, hb_bit_set_invertible_t const&) [function] [call site] 00141
4 void hb_bit_set_invertible_t::process<$_15>($_15 const&, hb_bit_set_invertible_t const&) [function] [call site] 00142
4 void hb_bit_set_invertible_t::process<$_16>($_16 const&, hb_bit_set_invertible_t const&) [function] [call site] 00143
1 hb_set_symmetric_difference [function] [call site] 00144
2 hb_sparseset_t ::symmetric_difference(hb_sparseset_t const&) [function] [call site] 00145
3 hb_bit_set_invertible_t::symmetric_difference(hb_bit_set_invertible_t const&) [function] [call site] 00146
4 void hb_bit_set_invertible_t::process<$_19>($_19 const&, hb_bit_set_invertible_t const&) [function] [call site] 00147
1 hb_set_destroy [function] [call site] 00148
2 bool hb_object_destroy (hb_set_t*) [function] [call site] 00149
3 void hb_object_trace (hb_set_t const*, char const*) [function] [call site] 00150
3 hb_object_header_t::is_inert() const [function] [call site] 00151
4 hb_reference_count_t::get_relaxed() const [function] [call site] 00152
3 bool hb_object_is_valid (hb_set_t const*) [function] [call site] 00153
4 hb_reference_count_t::is_valid() const [function] [call site] 00154
5 hb_atomic_int_t::operator int() const [function] [call site] 00155
3 __assert_fail [call site] 00156
3 hb_reference_count_t::dec() const [function] [call site] 00157
4 hb_atomic_int_t::dec() [function] [call site] 00158
3 void hb_object_fini (hb_set_t*) [function] [call site] 00159
4 hb_reference_count_t::fini() [function] [call site] 00160
5 hb_atomic_int_t::operator=(int) [function] [call site] 00161
4 hb_atomic_ptr_t ::get_acquire() const [function] [call site] 00162
4 hb_user_data_array_t::fini() [function] [call site] 00163
5 hb_lockable_set_t ::fini(hb_mutex_t&) [function] [call site] 00164
6 hb_vector_t ::fini() [function] [call site] 00165
6 hb_mutex_t::lock() [function] [call site] 00166
7 pthread_mutex_lock [call site] 00167
6 hb_vector_t ::tail() [function] [call site] 00168
7 hb_vector_t ::operator[](int) [function] [call site] 00169
6 hb_vector_t ::pop() [function] [call site] 00170
7 NullHelper ::get_null() [function] [call site] 00171
6 hb_mutex_t::unlock() [function] [call site] 00172
7 pthread_mutex_unlock [call site] 00173
6 hb_user_data_array_t::hb_user_data_item_t::fini() [function] [call site] 00174
6 hb_mutex_t::lock() [function] [call site] 00175
6 hb_vector_t ::fini() [function] [call site] 00176
6 hb_mutex_t::unlock() [function] [call site] 00177
5 hb_mutex_t::fini() [function] [call site] 00178
6 pthread_mutex_destroy [call site] 00179
4 hb_free_impl [function] [call site] 00180
4 hb_atomic_ptr_t ::set_relaxed(hb_user_data_array_t*) [function] [call site] 00181
3 hb_set_t::~hb_set_t() [function] [call site] 00182
4 hb_sparseset_t ::~hb_sparseset_t() [function] [call site] 00183
5 hb_sparseset_t ::fini() [function] [call site] 00184
6 void hb_object_fini >(hb_sparseset_t *) [function] [call site] 00185
6 hb_bit_set_invertible_t::fini() [function] [call site] 00186
7 hb_bit_set_t::fini() [function] [call site] 00187
8 hb_vector_t ::fini() [function] [call site] 00188
8 hb_vector_t ::fini() [function] [call site] 00189
5 hb_bit_set_invertible_t::~hb_bit_set_invertible_t() [function] [call site] 00190
6 hb_bit_set_t::~hb_bit_set_t() [function] [call site] 00191
7 hb_vector_t ::~hb_vector_t() [function] [call site] 00192
2 hb_free_impl [function] [call site] 00193
1 hb_set_destroy [function] [call site] 00194