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
210 210 3 :

['feof', 'fgets', 'parse_line']

210 210 parse_file call site: 00039 /src/krb5/src/util/profile/prof_parse.c:337
2 14 2 :

['strdup', 'profile_free_node']

2 14 profile_create_node call site: 00033 /src/krb5/src/util/profile/prof_tree.c:103
2 2 1 :

['strerror']

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

['strerror']

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

['profile_free_node']

0 12 profile_parse_file call site: 00037 /src/krb5/src/util/profile/prof_parse.c:417
0 0 None 210 210 parse_file call site: 00037 /src/krb5/src/util/profile/prof_parse.c:333
0 0 None 4 28 profile_create_node call site: 00031 /src/krb5/src/util/profile/prof_tree.c:93
0 0 None 0 12 profile_free_node call site: 00033 /src/krb5/src/util/profile/prof_tree.c:59
0 0 None 0 12 profile_create_node call site: 00032 /src/krb5/src/util/profile/prof_tree.c:99
0 0 None 0 0 add_error_table call site: 00014 /src/krb5/src/util/et/error_message.c:261
0 0 None 0 0 com_err_initialize call site: 00000 /src/krb5/src/util/et/error_message.c:42
0 0 None 0 0 com_err_initialize call site: 00000 /src/krb5/src/util/et/error_message.c:45

Fuzzer calltree

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