Fuzz introspector: opj_decompress_fuzzer_JP2
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
249 249 1 :

['opj_j2k_create_compress']

249 436 opj_jp2_create call site: 00165 /src/openjpeg/src/lib/openjp2/jp2.c:3151
94 160 3 :

['opj_mutex_create', 'opj_thread_pool_destroy', 'opj_thread_pool_setup']

94 162 opj_thread_pool_create call site: 00027 /src/openjpeg/src/lib/openjp2/thread.c:635
19 26 3 :

['opj_mct_decode_custom', 'opj_free', 'opj_malloc']

19 26 opj_tcd_mct_decode call site: 00000 /src/openjpeg/src/lib/openjp2/tcd.c:2192
10 10 3 :

['opj_get_num_cpus', 'atoi', 'strcmp']

10 10 opj_j2k_get_default_thread_count call site: 00020 /src/openjpeg/src/lib/openjp2/j2k.c:6735
8 38 6 :

['opj_free', 'opj_cond_signal', 'opj_cond_wait', 'opj_mutex_lock', 'opj_mutex_unlock', 'opj_malloc']

8 38 opj_thread_pool_submit_job call site: 00000 /src/openjpeg/src/lib/openjp2/thread.c:834
4 12 3 :

['opj_cond_wait', 'opj_mutex_lock', 'opj_mutex_unlock']

4 12 opj_thread_pool_wait_completion call site: 00064 /src/openjpeg/src/lib/openjp2/thread.c:897
0 20 1 :

['opj_j2k_update_image_dimensions']

0 4361 opj_j2k_decode call site: 00000 /src/openjpeg/src/lib/openjp2/j2k.c:12004
0 15 2 :

['opj_t1_destroy', 'opj_event_msg']

0 17 opj_t1_clbl_decode_processor call site: 00000 /src/openjpeg/src/lib/openjp2/t1.c:1677
0 8 2 :

['opj_mutex_lock', 'opj_mutex_unlock']

0 16 opj_t1_clbl_decode_processor call site: 00000 /src/openjpeg/src/lib/openjp2/t1.c:1632
0 8 2 :

['opj_free', 'opj_event_msg']

0 8 opj_tgt_create call site: 00000 /src/openjpeg/src/lib/openjp2/tgt.c:91
0 6 1 :

['opj_event_msg']

0 6 opj_j2k_read_unk call site: 00000 /src/openjpeg/src/lib/openjp2/j2k.c:5712
0 6 1 :

['opj_event_msg']

0 6 opj_j2k_read_ppm call site: 00000 /src/openjpeg/src/lib/openjp2/j2k.c:3905

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 memcmp [call site] 00001
1 opj_create_decompress [function] [call site] 00002
2 opj_calloc [function] [call site] 00003
3 calloc [call site] 00004
2 opj_j2k_create_decompress [function] [call site] 00005
3 opj_calloc [function] [call site] 00006
3 opj_calloc [function] [call site] 00007
3 opj_calloc [function] [call site] 00008
3 opj_j2k_create_cstr_index [function] [call site] 00009
4 opj_calloc [function] [call site] 00010
4 opj_calloc [function] [call site] 00011
3 opj_procedure_list_create [function] [call site] 00013
4 opj_calloc [function] [call site] 00014
4 opj_calloc [function] [call site] 00015
3 opj_procedure_list_create [function] [call site] 00017
3 opj_j2k_get_default_thread_count [function] [call site] 00018
4 getenv [call site] 00019
4 opj_has_thread_support [function] [call site] 00020
4 opj_get_num_cpus [function] [call site] 00021
5 sysconf [call site] 00022
4 strcmp [call site] 00023
4 atoi [function] [call site] 00024
5 strtol [call site] 00025
3 opj_thread_pool_create [function] [call site] 00026
4 opj_calloc [function] [call site] 00027
4 opj_tls_new [function] [call site] 00028
5 opj_calloc [function] [call site] 00029
4 opj_mutex_create [function] [call site] 00031
5 opj_calloc [function] [call site] 00032
5 pthread_mutex_init [call site] 00033
4 opj_thread_pool_setup [function] [call site] 00036
5 opj_cond_create [function] [call site] 00037
6 opj_malloc [function] [call site] 00038
6 pthread_cond_init [call site] 00039
5 opj_calloc [function] [call site] 00041
5 opj_mutex_create [function] [call site] 00042
5 opj_cond_create [function] [call site] 00043
5 opj_mutex_destroy [function] [call site] 00044
6 pthread_mutex_destroy [call site] 00045
5 opj_thread_create [function] [call site] 00047
6 opj_malloc [function] [call site] 00048
6 pthread_attr_init [call site] 00049
6 pthread_attr_setdetachstate [call site] 00050
6 pthread_create [call site] 00051
6 opj_thread_callback_adapter [function] [call site] 00052
5 opj_mutex_destroy [function] [call site] 00054
5 opj_cond_destroy [function] [call site] 00055
6 pthread_cond_destroy [call site] 00056
5 opj_mutex_lock [function] [call site] 00058
6 pthread_mutex_lock [call site] 00059
5 opj_cond_wait [function] [call site] 00060
5 opj_mutex_unlock [function] [call site] 00061
6 pthread_mutex_unlock [call site] 00062
4 opj_thread_pool_destroy [function] [call site] 00063
5 opj_thread_pool_wait_completion [function] [call site] 00064
6 opj_mutex_lock [function] [call site] 00065
6 opj_cond_wait [function] [call site] 00066
6 opj_mutex_unlock [function] [call site] 00067
5 opj_mutex_lock [function] [call site] 00068
5 opj_mutex_unlock [function] [call site] 00069
5 opj_mutex_lock [function] [call site] 00070
5 opj_cond_signal [function] [call site] 00071
6 pthread_cond_signal [call site] 00072
5 opj_mutex_unlock [function] [call site] 00073
5 opj_thread_join [function] [call site] 00074
6 pthread_join [call site] 00075
5 opj_cond_destroy [function] [call site] 00077
5 opj_mutex_destroy [function] [call site] 00078
5 opj_cond_destroy [function] [call site] 00081
5 opj_mutex_destroy [function] [call site] 00082
5 opj_tls_destroy [function] [call site] 00083
3 opj_thread_pool_create [function] [call site] 00087
3 opj_j2k_destroy [function] [call site] 00088
4 opj_j2k_tcp_destroy [function] [call site] 00089
4 opj_tcd_destroy [function] [call site] 00108
5 opj_tcd_free_tile [function] [call site] 00109
6 opj_tgt_destroy [function] [call site] 00110
6 opj_tgt_destroy [function] [call site] 00113
6 opj_image_data_free [function] [call site] 00116
7 opj_aligned_free [function] [call site] 00117
6 opj_image_data_free [function] [call site] 00118
4 opj_j2k_cp_destroy [function] [call site] 00124
5 opj_j2k_tcp_destroy [function] [call site] 00125
4 opj_procedure_list_destroy [function] [call site] 00132
4 opj_procedure_list_destroy [function] [call site] 00135
4 j2k_destroy_cstr_index [function] [call site] 00136
4 opj_image_destroy [function] [call site] 00143
5 opj_image_data_free [function] [call site] 00144
4 opj_image_destroy [function] [call site] 00148
4 opj_thread_pool_destroy [function] [call site] 00149
2 opj_jp2_create [function] [call site] 00152
3 opj_calloc [function] [call site] 00153
3 opj_j2k_create_compress [function] [call site] 00154
4 opj_calloc [function] [call site] 00155
4 opj_malloc [function] [call site] 00156
4 opj_procedure_list_create [function] [call site] 00157
4 opj_procedure_list_create [function] [call site] 00158
4 opj_j2k_get_default_thread_count [function] [call site] 00159
4 opj_thread_pool_create [function] [call site] 00160
4 opj_thread_pool_create [function] [call site] 00161
3 opj_j2k_create_decompress [function] [call site] 00162
3 opj_procedure_list_create [function] [call site] 00163
3 opj_procedure_list_create [function] [call site] 00164
3 opj_jp2_destroy [function] [call site] 00165
4 opj_j2k_destroy [function] [call site] 00166
4 opj_procedure_list_destroy [function] [call site] 00177
4 opj_procedure_list_destroy [function] [call site] 00178
2 opj_set_default_event_handler [function] [call site] 00181
3 opj_default_callback [function] [call site] 00182
3 opj_default_callback [function] [call site] 00183
3 opj_default_callback [function] [call site] 00184
1 opj_set_info_handler [function] [call site] 00185
1 InfoCallback(char const*, void*) [function] [call site] 00186
1 opj_set_warning_handler [function] [call site] 00187
1 WarningCallback(char const*, void*) [function] [call site] 00188
1 opj_set_error_handler [function] [call site] 00189
1 ErrorCallback(char const*, void*) [function] [call site] 00190
1 opj_set_default_decoder_parameters [function] [call site] 00191
1 opj_setup_decoder [function] [call site] 00192
2 opj_event_msg [function] [call site] 00193
3 vsnprintf [call site] 00194
1 opj_stream_create [function] [call site] 00195
2 opj_calloc [function] [call site] 00196
2 opj_malloc [function] [call site] 00197
2 opj_stream_default_read [function] [call site] 00199
2 opj_stream_default_write [function] [call site] 00200
2 opj_stream_default_skip [function] [call site] 00201
2 opj_stream_default_seek [function] [call site] 00202
1 opj_stream_set_user_data_length [function] [call site] 00203
1 opj_stream_set_read_function [function] [call site] 00204
1 ReadCallback(void*, unsigned long, void*) [function] [call site] 00205
1 opj_stream_set_seek_function [function] [call site] 00206
1 SeekCallback(long, void*) [function] [call site] 00207
1 opj_stream_set_skip_function [function] [call site] 00208
1 SkipCallback(long, void*) [function] [call site] 00209
1 opj_stream_set_user_data [function] [call site] 00210
1 opj_read_header [function] [call site] 00211
2 opj_event_msg [function] [call site] 00212
1 opj_destroy_codec [function] [call site] 00213
1 opj_stream_destroy [function] [call site] 00215
1 opj_image_destroy [function] [call site] 00218
1 opj_set_decode_area [function] [call site] 00219
1 opj_decode [function] [call site] 00220
1 opj_end_decompress [function] [call site] 00221
1 opj_stream_destroy [function] [call site] 00222
1 opj_destroy_codec [function] [call site] 00223
1 opj_image_destroy [function] [call site] 00224