Fuzz introspector: fuzz_marshal_cred
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
2 2 1 :

['explicit_bzero']

2 4 k5_buf_free call site: 00130 /src/krb5/src/util/support/k5buf.c:271
0 7 2 :

['krb5_free_principal', 'k5_input_set_status']

0 7 unmarshal_princ call site: 00018 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:181
0 2 1 :

['k5_input_set_status']

0 2 get_len_bytes call site: 00023 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:138
0 2 1 :

['k5_input_set_status']

0 2 unmarshal_addrs call site: 00054 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:237
0 2 1 :

['k5_input_set_status']

0 2 unmarshal_addr call site: 00057 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:215
0 2 1 :

['k5_input_set_status']

0 2 unmarshal_authdata call site: 00064 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:275
0 2 1 :

['k5_input_set_status']

0 2 unmarshal_authdatum call site: 00067 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:252
0 2 1 :

['set_error']

0 2 k5_buf_init_dynamic call site: 00082 /src/krb5/src/util/support/k5buf.c:129
0 0 1 :

['malloc']

4 6 ensure_space call site: 00092 /src/krb5/src/util/support/k5buf.c:87
0 0 None 2 4 ensure_space call site: 00091 /src/krb5/src/util/support/k5buf.c:78
0 0 None 2 4 ensure_space call site: 00092 /src/krb5/src/util/support/k5buf.c:83
0 0 None 0 2 unmarshal_princ call site: 00004 /src/krb5/src/lib/krb5/ccache/ccmarshal.c:164

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 k5_unmarshal_cred [function] [call site] 00001
2 k5_input_init [function] [call site] 00002
2 unmarshal_princ [function] [call site] 00003
3 k5alloc [function] [call site] 00004
4 k5calloc [function] [call site] 00005
5 calloc [call site] 00006
3 k5_input_set_status [function] [call site] 00007
3 get32 [function] [call site] 00008
4 k5_input_get_uint32_n [function] [call site] 00009
5 k5_input_get_bytes [function] [call site] 00010
6 k5_input_set_status [function] [call site] 00011
5 load_32_n [function] [call site] 00012
4 k5_input_get_uint32_be [function] [call site] 00013
5 k5_input_get_bytes [function] [call site] 00014
5 load_32_be [function] [call site] 00015
6 __bswap_32 [function] [call site] 00016
3 get_data [function] [call site] 00019
4 get_len_bytes [function] [call site] 00020
5 k5_input_get_bytes [function] [call site] 00022
5 k5_input_set_status [function] [call site] 00025
4 empty_data [function] [call site] 00026
5 make_data [function] [call site] 00027
4 make_data [function] [call site] 00028
3 k5_input_set_status [function] [call site] 00030
3 krb5_free_principal [function] [call site] 00031
2 unmarshal_princ [function] [call site] 00032
2 unmarshal_keyblock [function] [call site] 00033
3 get16 [function] [call site] 00034
4 k5_input_get_uint16_n [function] [call site] 00035
5 k5_input_get_bytes [function] [call site] 00036
5 load_16_n [function] [call site] 00037
4 k5_input_get_uint16_be [function] [call site] 00038
5 k5_input_get_bytes [function] [call site] 00039
5 load_16_be [function] [call site] 00040
6 __bswap_16 [function] [call site] 00041
3 get_len_bytes [function] [call site] 00043
2 k5_input_get_byte [function] [call site] 00048
3 k5_input_get_bytes [function] [call site] 00049
2 unmarshal_addrs [function] [call site] 00051
3 k5_input_set_status [function] [call site] 00053
3 calloc [call site] 00054
3 k5_input_set_status [function] [call site] 00055
3 unmarshal_addr [function] [call site] 00056
4 calloc [call site] 00057
4 k5_input_set_status [function] [call site] 00058
4 get_len_bytes [function] [call site] 00060
2 unmarshal_authdata [function] [call site] 00061
3 k5_input_set_status [function] [call site] 00063
3 calloc [call site] 00064
3 k5_input_set_status [function] [call site] 00065
3 unmarshal_authdatum [function] [call site] 00066
4 calloc [call site] 00067
4 k5_input_set_status [function] [call site] 00068
4 get_len_bytes [function] [call site] 00070
2 krb5_free_cred_contents [function] [call site] 00073
3 krb5_free_principal [function] [call site] 00074
3 krb5_free_principal [function] [call site] 00075
3 krb5_free_keyblock_contents [function] [call site] 00076
4 krb5int_c_free_keyblock_contents [function] [call site] 00077
5 zapfree [function] [call site] 00078
6 explicit_bzero [call site] 00079
3 krb5_free_addresses [function] [call site] 00080
3 krb5_free_authdata [function] [call site] 00081
1 k5_buf_init_dynamic [function] [call site] 00082
2 set_error [function] [call site] 00083
1 k5_marshal_cred [function] [call site] 00084
2 k5_marshal_princ [function] [call site] 00085
3 put32 [function] [call site] 00086
4 store_32_n [function] [call site] 00087
4 store_32_be [function] [call site] 00088
5 __bswap_32 [function] [call site] 00089
4 k5_buf_add_len [function] [call site] 00090
5 ensure_space [function] [call site] 00091
6 __assert_fail [call site] 00092
6 explicit_bzero [call site] 00093
6 realloc [call site] 00094
6 explicit_bzero [call site] 00095
6 set_error [function] [call site] 00096
3 put_data [function] [call site] 00099
4 put_len_bytes [function] [call site] 00100
5 k5_buf_add_len [function] [call site] 00102
2 k5_marshal_princ [function] [call site] 00104
2 marshal_keyblock [function] [call site] 00105
3 put16 [function] [call site] 00106
4 store_16_n [function] [call site] 00107
4 store_16_be [function] [call site] 00108
5 __bswap_16 [function] [call site] 00109
4 k5_buf_add_len [function] [call site] 00110
3 put_len_bytes [function] [call site] 00112
2 k5_buf_add_len [function] [call site] 00117
2 marshal_authdata [function] [call site] 00123
1 k5_buf_free [function] [call site] 00129
2 __assert_fail [call site] 00130
2 explicit_bzero [call site] 00131
2 set_error [function] [call site] 00132
1 krb5_free_cred_contents [function] [call site] 00133