Fuzz introspector
For issues and ideas: https://github.com/ossf/fuzz-introspector/issues

Project functions overview

The following table shows data about each function in the project. The functions included in this table correspond to all functions that exist in the executables of the fuzzers. As such, there may be functions that are from third-party libraries.

For further technical details on the meaning of columns in the below table, please see the Glossary .

Func name Functions filename Args Function call depth Reached by Fuzzers Runtime reached by Fuzzers Combined reached by Fuzzers Fuzzers runtime hit Func lines hit % I Count BB Count Cyclomatic complexity Functions reached Reached by functions Accumulated cyclomatic complexity Undiscovered complexity

Fuzzer details

Fuzzer: fuzzhttp

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 1 2.17%
gold [1:9] 1 2.17%
yellow [10:29] 5 10.8%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 39 84.7%
All colors 46 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
1 3 cupsCopyString call site: 00003 validate_end

Runtime coverage analysis

Covered functions
15
Functions that are reachable but not covered
10
Reachable functions
19
Percentage of reachable functions covered
47.37%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzhttp.c 1
cups/http-support.c 6
cups/string.c 3

Fuzzer: fuzzraster

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 63 41.7%
gold [1:9] 14 9.27%
yellow [10:29] 2 1.32%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 72 47.6%
All colors 151 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
49 8 cups_globals_init call site: 00008 _cupsStrFree
3 70 _cupsRasterNew call site: 00070 _cupsRasterAddError
3 83 _cupsRasterNew call site: 00083 _cupsRasterAddError
3 109 cups_raster_update call site: 00109 _cupsRasterAddError
2 133 LLVMFuzzerTestOneInput call site: 00133 cups_raster_io
1 75 _cupsRasterAddError call site: 00075 realloc
1 77 _cupsRasterNew call site: 00077 _cupsRasterAddError
1 97 cupsRasterReadHeader call site: 00097 cupsCopyString

Runtime coverage analysis

Covered functions
25
Functions that are reachable but not covered
53
Reachable functions
74
Percentage of reachable functions covered
28.38%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzraster.c 3
cups/raster-stream.c 11
cups/raster-error.c 3
cups/globals.c 3
cups/string.c 3
cups/thread.c 2
cups/array.c 5
cups/http.c 2
cups/./tls-openssl.c 2
cups/http-addr.c 1
cups/http-addrlist.c 1
cups/file.c 4

Fuzzer: fuzzfile

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 298 69.6%
gold [1:9] 2 0.46%
yellow [10:29] 2 0.46%
greenyellow [30:49] 0 0.0%
lawngreen 50+ 126 29.4%
All colors 428 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
214 83 cupsFileClose call site: 00083 httpAddrConnect
36 31 cupsCopyString call site: 00031 httpAddrGetList
6 12 cups_open call site: 00012 __errno_location
6 338 cups_read call site: 00338 __errno_location
4 19 cups_open call site: 00019 __errno_location
4 367 cupsFileSeek call site: 00367 cups_fill
3 314 cupsFilePrintf call site: 00314 cups_write
2 8 cupsFileOpen call site: 00008 cups_open
2 305 cupsFileOpenFd call site: 00305 httpAddrClose
2 318 cupsFilePrintf call site: 00318 cups_compress
2 325 cupsFilePuts call site: 00325 cups_compress
2 390 LLVMFuzzerTestOneInput call site: 00390 cupsCopyString

Runtime coverage analysis

Covered functions
38
Functions that are reachable but not covered
123
Reachable functions
154
Percentage of reachable functions covered
20.13%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzfile.c 2
cups/file.c 24
cups/string.c 7
cups/http-addrlist.c 3
cups/globals.c 5
cups/thread.c 6
cups/array.c 8
cups/http.c 3
cups/./tls-openssl.c 3
cups/http-addr.c 3
cups/request.c 1
cups/langprintf.c 1
cups/language.c 4
cups/dir.c 4

Fuzzer: fuzzipp

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 336 55.3%
gold [1:9] 96 15.8%
yellow [10:29] 16 2.63%
greenyellow [30:49] 2 0.32%
lawngreen 50+ 157 25.8%
All colors 607 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
65 232 cupsLangFind call site: 00232 httpAddrConnect
51 331 cups_fill call site: 00331 cups_fill
29 95 cupsFileOpen call site: 00095 httpAddrGetList
19 16 cupsMutexUnlock call site: 00016 cupsFileClose
17 178 _cupsStrAlloc call site: 00178 _cupsSetError
16 197 cupsRWLockWrite call site: 00197 _cupsSetError
14 452 _cupsSetDefaults call site: 00452 _cups_strcasecmp
12 432 _cupsSetDefaults call site: 00432 cupsArrayNewStrings
6 78 cups_open call site: 00078 __errno_location
6 305 cupsFileOpenFd call site: 00305 cups_read_client_conf
6 445 _cupsSetDefaults call site: 00445 cupsArrayNewStrings
5 45 cupsFileClose call site: 00045 cups_write

Runtime coverage analysis

Covered functions
73
Functions that are reachable but not covered
110
Reachable functions
170
Percentage of reachable functions covered
35.29%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzipp.c 2
cups/ipp.c 17
cups/globals.c 5
cups/string.c 8
cups/thread.c 6
cups/array.c 10
cups/http.c 3
cups/./tls-openssl.c 3
cups/http-addr.c 3
cups/http-addrlist.c 3
cups/file.c 13
cups/usersys.c 7
cups/request.c 1
cups/langprintf.c 1
cups/language.c 5
cups/tls.c 1

Fuzzer: fuzzippread

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 371 54.3%
gold [1:9] 98 14.3%
yellow [10:29] 18 2.63%
greenyellow [30:49] 2 0.29%
lawngreen 50+ 193 28.2%
All colors 682 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
150 231 cupsLangFind call site: 00231 httpAddrConnect
40 15 cupsMutexUnlock call site: 00015 cupsFileClose
34 89 cupsFileOpen call site: 00089 httpAddrGetList
17 177 _cupsStrAlloc call site: 00177 _cupsSetError
16 196 cupsRWLockWrite call site: 00196 _cupsSetError
15 73 cupsFileOpen call site: 00073 cups_open
14 451 _cupsSetDefaults call site: 00451 _cups_strcasecmp
12 431 _cupsSetDefaults call site: 00431 cupsArrayNewStrings
6 444 _cupsSetDefaults call site: 00444 cupsArrayNewStrings
5 219 cupsLangLoadStrings call site: 00219 _cupsSetError
5 414 cupsSetServer call site: 00414 strcmp
4 148 cupsLangFind call site: 00148 _cupsSetError

Runtime coverage analysis

Covered functions
82
Functions that are reachable but not covered
121
Reachable functions
182
Percentage of reachable functions covered
33.52%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzippread.c 4
cups/ipp.c 22
cups/globals.c 5
cups/string.c 8
cups/thread.c 6
cups/array.c 10
cups/http.c 3
cups/./tls-openssl.c 3
cups/http-addr.c 3
cups/http-addrlist.c 3
cups/file.c 11
cups/usersys.c 7
cups/request.c 1
cups/langprintf.c 1
cups/language.c 5
cups/tls.c 1
cups/http-support.c 3

Fuzzer: fuzzhttpconn

Call tree

The calltree shows the control flow of the fuzzer. This is overlaid with coverage information to display how much of the potential code a fuzzer can reach is in fact covered at runtime. In the following there is a link to a detailed calltree visualisation as well as a bitmap showing a high-level view of the calltree. For further information about these topics please see the glossary for full calltree and calltree overview

Call tree overview bitmap:

The distribution of callsites in terms of coloring is
Color Runtime hitcount Callsite count Percentage
red 0 845 60.0%
gold [1:9] 166 11.7%
yellow [10:29] 4 0.28%
greenyellow [30:49] 4 0.28%
lawngreen 50+ 388 27.5%
All colors 1407 100

Fuzz blockers

The following nodes represent call sites where fuzz blockers occur.

Amount of callsites blocked Calltree index Parent function Callsite Largest blocked function
220 529 _httpTLSStart call site: 00529 cupsCreateCredentials
116 983 httpGetDateString call site: 00983 httpConnectAgain
95 343 cupsFileOpen call site: 00343 httpAddrGetList
28 924 http_copy_encode call site: 00924 httpConnectAgain
25 227 httpAddrGetList call site: 00227 _cupsSetError
24 32 httpClose call site: 00032 cupsFileClose
24 298 httpAddrConnect call site: 00298 _httpTLSStart
22 1179 cupsDoAuthentication call site: 01179 _cupsConnect
17 170 _cupsStrAlloc call site: 00170 _cupsSetError
16 189 cupsRWLockWrite call site: 00189 _cupsSetError
15 327 cupsFileOpen call site: 00327 cups_open
14 101 httpAddrGetList call site: 00101 _cupsSetError

Runtime coverage analysis

Covered functions
150
Functions that are reachable but not covered
276
Reachable functions
405
Percentage of reachable functions covered
31.85%
NB: The sum of covered functions and functions that are reachable but not covered need not be equal to Reachable functions . This is because the reachability analysis is an approximation and thus at runtime some functions may be covered that are not included in the reachability analysis. This is a limitation of our static analysis capabilities.
Function name source code lines source lines hit percentage hit

Files reached

filename functions hit
ossfuzz/fuzzhttpconn.c 9
cups/usersys.c 16
cups/globals.c 5
cups/string.c 10
cups/thread.c 6
cups/array.c 12
cups/http.c 45
cups/./tls-openssl.c 26
cups/http-addr.c 7
cups/http-addrlist.c 4
cups/file.c 11
cups/request.c 2
cups/langprintf.c 1
cups/language.c 6
cups/tls.c 6
cups/dir.c 3
cups/http-support.c 6
cups/hash.c 3
cups/md5.c 4
cups/auth.c 3
cups/ipp-support.c 1
cups/rand.c 1

Fuzz engine guidance

This sections provides heuristics that can be used as input to a fuzz engine when running a given fuzz target. The current focus is on providing input that is usable by libFuzzer.

ossfuzz/fuzzhttp.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['cupsCopyString']

ossfuzz/fuzzraster.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['cups_globals_init', '_cupsRasterNew', 'cups_raster_update', 'LLVMFuzzerTestOneInput', '_cupsRasterAddError', 'cupsRasterReadHeader']

ossfuzz/fuzzfile.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['cupsFileClose', 'cupsCopyString', 'cups_open', 'cups_read', 'cupsFileSeek', 'cupsFilePrintf', 'cupsFileOpen', 'cupsFileOpenFd']

ossfuzz/fuzzipp.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['cupsLangFind', 'cups_fill', 'cupsFileOpen', 'cupsMutexUnlock', '_cupsStrAlloc', 'cupsRWLockWrite', '_cupsSetDefaults', 'cups_open', 'cupsFileOpenFd']

ossfuzz/fuzzippread.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['cupsLangFind', 'cupsMutexUnlock', 'cupsFileOpen', '_cupsStrAlloc', 'cupsRWLockWrite', '_cupsSetDefaults', 'cupsLangLoadStrings']

ossfuzz/fuzzhttpconn.c

Dictionary

Use this with the libFuzzer -dict=DICT.file flag


Fuzzer function priority

Use one of these functions as input to libfuzzer with flag: -focus_function name

-focus_function=['_httpTLSStart', 'httpGetDateString', 'cupsFileOpen', 'http_copy_encode', 'httpAddrGetList', 'httpClose', 'httpAddrConnect', 'cupsDoAuthentication', '_cupsStrAlloc', 'cupsRWLockWrite']

Files and Directories in report

This section shows which files and directories are considered in this report. The main reason for showing this is fuzz introspector may include more code in the reasoning than is desired. This section helps identify if too many files/directories are included, e.g. third party code, which may be irrelevant for the threat model. In the event too much is included, fuzz introspector supports a configuration file that can exclude data from the report. See the following link for more information on how to create a config file: link

Files in report

Source file Reached by Covered by
[] []
/src/libcups/cups/ipp-support.c ['fuzzhttpconn'] []
/src/libcups/cups/http-addrlist.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/cups/dir.c ['fuzzfile', 'fuzzhttpconn'] ['fuzzfile']
/src/libcups/ossfuzz/fuzzfile.c ['fuzzfile'] ['fuzzfile']
/src/libcups/cups/file.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/md5.c ['fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/cups/./tls-openssl.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] []
/src/libcups/cups/raster-stream.c ['fuzzraster'] ['fuzzraster']
/src/libcups/ossfuzz/fuzzipp.c ['fuzzipp'] ['fuzzipp']
/src/libcups/cups/ipp.c ['fuzzipp', 'fuzzippread'] ['fuzzipp', 'fuzzippread']
/src/libcups/cups/raster-error.c ['fuzzraster'] ['fuzzraster']
/src/libcups/cups/language.c ['fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/thread.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/request.c ['fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/hash.c ['fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/ossfuzz/fuzzraster.c ['fuzzraster'] ['fuzzraster']
/src/libcups/cups/array.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/http.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/cups/tls.c ['fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/http-addr.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/ossfuzz/fuzzhttpconn.c ['fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/ossfuzz/fuzzhttp.c ['fuzzhttp'] ['fuzzhttp']
/src/libcups/cups/usersys.c ['fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/langprintf.c ['fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/globals.c ['fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzraster', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/ossfuzz/fuzzippread.c ['fuzzippread'] ['fuzzippread']
/src/libcups/cups/auth.c ['fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/cups/string.c ['fuzzhttp', 'fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzhttp', 'fuzzraster', 'fuzzfile', 'fuzzipp', 'fuzzippread', 'fuzzhttpconn']
/src/libcups/cups/rand.c ['fuzzhttpconn'] ['fuzzhttpconn']
/src/libcups/cups/http-support.c ['fuzzhttp', 'fuzzippread', 'fuzzhttpconn'] ['fuzzhttp', 'fuzzippread', 'fuzzhttpconn']

Directories in report

Directory
/src/libcups/cups/./
/src/libcups/cups/
/src/libcups/ossfuzz/