Fuzz introspector: fuzz_ds_ahocorasick
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 0 None 2 80 ndpi_match_string call site: 00098 /src/ndpi/src/lib/ndpi_main.c:3275
0 0 None 0 126 ac_automata_add call site: 00035 /src/ndpi/src/lib/third_party/src/ahocorasick.c:235
0 0 None 0 36 ac_automata_search call site: 00089 /src/ndpi/src/lib/third_party/src/ahocorasick.c:454
0 0 None 0 36 ac_automata_search call site: 00095 /src/ndpi/src/lib/third_party/src/ahocorasick.c:485
0 0 None 0 10 ac_automata_release call site: 00121 /src/ndpi/src/lib/third_party/src/ahocorasick.c:571
0 0 None 0 4 dump_node_header call site: 00000 /src/ndpi/src/lib/third_party/src/ahocorasick.c:620
0 0 None 0 2 ac_automata_walk call site: 00082 /src/ndpi/src/lib/third_party/src/ahocorasick.c:309
0 0 None 0 2 ac_automata_walk call site: 00083 /src/ndpi/src/lib/third_party/src/ahocorasick.c:325
0 0 1 :

['free']

0 0 ndpi_free call site: 00021 /src/ndpi/src/lib/ndpi_memory.c:80
0 0 None 0 0 ndpi_strdup call site: 00030 /src/ndpi/src/lib/ndpi_memory.c:108
0 0 None 0 0 ac_automata_add call site: 00035 /src/ndpi/src/lib/third_party/src/ahocorasick.c:241
0 0 None 0 0 ac_automata_search call site: 00096 /src/ndpi/src/lib/third_party/src/ahocorasick.c:524

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 fuzz_set_alloc_callbacks_and_seed [function] [call site] 00001
2 fuzz_set_alloc_callbacks [function] [call site] 00002
3 set_ndpi_malloc [function] [call site] 00003
3 malloc_wrapper [function] [call site] 00004
3 set_ndpi_free [function] [call site] 00006
3 free_wrapper [function] [call site] 00007
2 fuzz_set_alloc_seed [function] [call site] 00008
1 ac_domain_match_handler [function] [call site] 00009
2 printf [call site] 00010
2 printf [call site] 00011
2 ndpi_is_middle_string_char [function] [call site] 00012
2 ndpi_is_middle_string_char [function] [call site] 00013
2 printf [call site] 00014
2 printf [call site] 00015
1 ac_automata_init [function] [call site] 00016
2 ndpi_calloc [function] [call site] 00017
3 ndpi_malloc [function] [call site] 00018
2 node_create [function] [call site] 00019
3 ndpi_calloc [function] [call site] 00020
2 ndpi_free [function] [call site] 00021
1 ndpi_init_automa [function] [call site] 00022
2 ac_automata_init [function] [call site] 00023
2 ac_domain_match_handler [function] [call site] 00024
1 ac_automata_feature [function] [call site] 00025
1 ac_automata_feature [function] [call site] 00026
1 ac_automata_feature [function] [call site] 00027
1 ac_automata_name [function] [call site] 00028
2 strncpy [call site] 00029
1 ndpi_strdup [function] [call site] 00030
2 strlen [call site] 00031
2 ndpi_malloc [function] [call site] 00032
1 strlen [call site] 00033
1 strlen [call site] 00034
1 ac_automata_add [function] [call site] 00035
2 node_find_next [function] [call site] 00036
3 edge_get_alpha [function] [call site] 00037
2 node_create_next [function] [call site] 00041
3 node_find_next [function] [call site] 00042
3 node_create [function] [call site] 00043
3 node_register_outgoing [function] [call site] 00044
4 node_resize_outgoing [function] [call site] 00045
5 edge_data_size [function] [call site] 00046
5 ndpi_calloc [function] [call site] 00047
5 edge_data_size [function] [call site] 00048
5 ndpi_calloc [function] [call site] 00049
5 edge_get_alpha [function] [call site] 00050
5 ndpi_free [function] [call site] 00051
4 edge_get_alpha [function] [call site] 00052
4 node_resize_outgoing [function] [call site] 00053
4 edge_get_alpha [function] [call site] 00054
3 node_release [function] [call site] 00055
4 node_release_pattern [function] [call site] 00056
5 ndpi_free [function] [call site] 00057
4 ndpi_free [function] [call site] 00058
4 ndpi_free [function] [call site] 00059
4 ndpi_free [function] [call site] 00060
2 node_register_matchstr [function] [call site] 00061
3 node_has_matchstr [function] [call site] 00062
4 memcmp [call site] 00063
3 node_resize_mp [function] [call site] 00064
4 mp_data_size [function] [call site] 00065
4 ndpi_calloc [function] [call site] 00066
4 mp_data_size [function] [call site] 00067
4 ndpi_malloc [function] [call site] 00068
4 mp_data_size [function] [call site] 00069
4 ndpi_free [function] [call site] 00070
3 node_resize_mp [function] [call site] 00071
1 ndpi_free [function] [call site] 00072
1 ndpi_strdup [function] [call site] 00073
1 ndpi_strdup [function] [call site] 00074
1 ndpi_add_string_to_automa [function] [call site] 00075
2 ndpi_add_string_value_to_automa [function] [call site] 00076
3 strlen [call site] 00077
3 ac_automata_add [function] [call site] 00078
1 ndpi_free [function] [call site] 00079
1 ac_automata_finalize [function] [call site] 00080
2 ac_automata_traverse_setfailure [function] [call site] 00081
3 ac_automata_walk [function] [call site] 00082
4 edge_get_alpha [function] [call site] 00083
2 ac_automata_walk [function] [call site] 00084
1 ndpi_finalize_automa [function] [call site] 00085
2 ac_automata_finalize [function] [call site] 00086
1 ndpi_strdup [function] [call site] 00087
1 strlen [call site] 00088
1 ac_automata_search [function] [call site] 00089
2 printf [call site] 00090
2 node_findbs_next_ac [function] [call site] 00091
3 node_findbs_next [function] [call site] 00092
3 node_findbs_next [function] [call site] 00094
2 ac_automata_exact_match [function] [call site] 00095
2 printf [call site] 00096
2 printf [call site] 00097
1 ndpi_match_string [function] [call site] 00098
2 strlen [call site] 00099
2 ndpi_match_string_common [function] [call site] 00100
3 ac_automata_search [function] [call site] 00101
1 strlen [call site] 00102
1 ndpi_match_string_protocol_id [function] [call site] 00103
2 ndpi_match_string_common [function] [call site] 00104
1 strlen [call site] 00105
1 ac_automata_search [function] [call site] 00106
1 ndpi_match_string [function] [call site] 00107
1 strlen [call site] 00108
1 ndpi_match_string_protocol_id [function] [call site] 00109
1 ndpi_free [function] [call site] 00110
1 fopen [call site] 00111
1 ac_automata_dump [function] [call site] 00112
2 fprintf [call site] 00113
2 ndpi_malloc [function] [call site] 00114
2 ac_automata_walk [function] [call site] 00115
2 fprintf [call site] 00116
2 ndpi_free [function] [call site] 00117
1 fclose [call site] 00118
1 ac_automata_get_stats [function] [call site] 00119
1 ac_automata_release [function] [call site] 00120
2 ac_automata_walk [function] [call site] 00121
2 node_release [function] [call site] 00122
2 ndpi_free [function] [call site] 00123
2 ndpi_free [function] [call site] 00124
2 ndpi_free [function] [call site] 00125
1 ndpi_free_automa [function] [call site] 00126
2 ac_automata_release [function] [call site] 00127