Fuzz introspector: fuzz_profile
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
4 4 1 :

['strcmp']

4 4 profile_find_node call site: 00087 /src/krb5/src/util/profile/prof_tree.c:358
2 15 3 :

['strdup', 'skip_over_blanks', 'strip_line']

2 15 parse_line call site: 00045 /src/krb5/src/util/profile/prof_parse.c:317
2 2 1 :

['strerror']

2 2 k5_mutex_lock call site: 00019 /src/krb5/src/util/support/../../include/k5-thread.h:371
2 2 1 :

['strerror']

2 2 k5_mutex_unlock call site: 00027 /src/krb5/src/util/support/../../include/k5-thread.h:383
0 6 1 :

['profile_free_node']

0 6 profile_create_node call site: 00038 /src/krb5/src/util/profile/prof_tree.c:105
0 0 None 12 12 need_double_quotes call site: 00088 /src/krb5/src/util/profile/prof_parse.c:464
0 0 None 8 8 profile_find_node call site: 00084 /src/krb5/src/util/profile/prof_tree.c:319
0 0 None 8 8 profile_find_node call site: 00085 /src/krb5/src/util/profile/prof_tree.c:330
0 0 None 4 114 parse_file call site: 00040 /src/krb5/src/util/profile/prof_parse.c:348
0 0 None 4 16 profile_create_node call site: 00034 /src/krb5/src/util/profile/prof_tree.c:93
0 0 None 4 4 profile_find_node call site: 00086 /src/krb5/src/util/profile/prof_tree.c:347
0 0 None 0 6 profile_create_node call site: 00035 /src/krb5/src/util/profile/prof_tree.c:99

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 getpid [call site] 00001
1 snprintf [call site] 00002
1 fopen [call site] 00003
1 fwrite [call site] 00004
1 fclose [call site] 00005
1 fopen [call site] 00006
1 initialize_prof_error_table [function] [call site] 00007
2 add_error_table [function] [call site] 00008
3 k5_once [function] [call site] 00009
4 krb5int_pthread_loaded [function] [call site] 00010
5 pthread_once [call site] 00011
5 loaded_test_aux [function] [call site] 00012
5 pthread_once [call site] 00013
5 loaded_test_aux [function] [call site] 00014
4 pthread_once [call site] 00015
4 __assert_fail [call site] 00016
3 __assert_fail [call site] 00017
3 k5_mutex_lock [function] [call site] 00018
4 k5_os_mutex_lock [function] [call site] 00019
5 krb5int_pthread_loaded [function] [call site] 00020
5 pthread_mutex_lock [call site] 00021
4 strerror [call site] 00022
4 fprintf [call site] 00023
4 __assert_fail [call site] 00024
3 bindtextdomain [call site] 00025
3 k5_mutex_unlock [function] [call site] 00026
4 k5_os_mutex_unlock [function] [call site] 00027
5 krb5int_pthread_loaded [function] [call site] 00028
5 pthread_mutex_unlock [call site] 00029
4 strerror [call site] 00030
4 fprintf [call site] 00031
4 __assert_fail [call site] 00032
1 profile_parse_file [function] [call site] 00033
2 profile_create_node [function] [call site] 00034
3 strdup [call site] 00035
3 profile_free_node [function] [call site] 00036
4 profile_free_node [function] [call site] 00037
3 strdup [call site] 00038
3 profile_free_node [function] [call site] 00039
2 parse_file [function] [call site] 00040
3 feof [call site] 00041
3 fgets [call site] 00042
3 parse_line [function] [call site] 00043
4 strncmp [call site] 00044
4 __ctype_b_loc [call site] 00045
4 skip_over_blanks [function] [call site] 00046
5 __ctype_b_loc [call site] 00047
4 strip_line [function] [call site] 00048
5 strlen [call site] 00049
4 strdup [call site] 00050
4 parse_std_line [function] [call site] 00051
5 skip_over_blanks [function] [call site] 00052
5 strip_line [function] [call site] 00053
5 strchr [call site] 00054
5 profile_add_node [function] [call site] 00055
6 strcmp [call site] 00056
6 profile_create_node [function] [call site] 00057
5 profile_is_node_final [function] [call site] 00058
5 profile_make_node_final [function] [call site] 00059
5 skip_over_blanks [function] [call site] 00060
5 profile_make_node_final [function] [call site] 00061
5 profile_get_node_parent [function] [call site] 00062
5 strchr [call site] 00063
5 __ctype_b_loc [call site] 00064
5 __ctype_b_loc [call site] 00065
5 skip_over_blanks [function] [call site] 00066
5 parse_quoted_string [function] [call site] 00067
5 skip_over_blanks [function] [call site] 00068
5 strlen [call site] 00069
5 __ctype_b_loc [call site] 00070
5 strchr [call site] 00071
5 profile_add_node [function] [call site] 00072
5 profile_is_node_final [function] [call site] 00073
5 profile_make_node_final [function] [call site] 00074
5 strchr [call site] 00075
5 profile_add_node [function] [call site] 00076
5 profile_make_node_final [function] [call site] 00077
4 skip_over_blanks [function] [call site] 00078
2 profile_free_node [function] [call site] 00079
1 profile_write_tree_to_buffer [function] [call site] 00080
2 dump_profile [function] [call site] 00081
3 profile_find_node_relation [function] [call site] 00082
4 profile_find_node [function] [call site] 00083
5 strcmp [call site] 00084
5 strcmp [call site] 00085
5 strcmp [call site] 00086
5 strcmp [call site] 00087
3 need_double_quotes [function] [call site] 00088
4 __ctype_b_loc [call site] 00089
4 strlen [call site] 00090
4 strchr [call site] 00091
3 output_quoted_string [function] [call site] 00092
3 profile_find_node_subsection [function] [call site] 00093
4 profile_find_node [function] [call site] 00094
3 profile_is_node_final [function] [call site] 00095
3 dump_profile [function] [call site] 00096
4 dump_profile [function] [call site] 00097
5 profile_is_node_final [function] [call site] 00098
2 dump_profile_to_buffer_cb [function] [call site] 00099
3 strlen [call site] 00100
3 add_data_to_buffer [function] [call site] 00101
4 realloc [call site] 00102
2 add_data_to_buffer [function] [call site] 00103
2 realloc [call site] 00104
1 profile_verify_node [function] [call site] 00105
2 profile_verify_node [function] [call site] 00106
1 profile_free_node [function] [call site] 00107
1 fclose [call site] 00108
1 unlink [call site] 00109