Fuzz introspector: tidy_config_fuzzer
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
6105 6256 29 :

['prvTidytmbstrdup', 'prvTidyFindDocType', 'prvTidyCheckHTML5', 'prvTidySetXHTMLDocType', 'prvTidyTidyMetaCharset', 'prvTidyCleanStyle', 'prvTidyRemoveNode', 'prvTidyList2BQ', 'prvTidyDropEmptyElements', 'prvTidyCleanGoogleDocument', 'prvTidyFindXmlDecl', 'prvTidyGetAttrByName', 'prvTidyNestedEmphasis', 'prvTidyCleanHead', 'prvTidyDropSections', 'prvTidyCheckNodeIntegrity', 'prvTidyReport', 'prvTidyBQ2Div', 'prvTidyFixXmlDecl', 'prvTidyFixDocType', 'prvTidyFixAnchors', 'prvTidyEmFromI', 'prvTidyCheckHTMLTagsAttribsVersions', 'prvTidyAddGenerator', 'prvTidyIsWord2000', 'prvTidyFixXhtmlNamespace', 'prvTidyCleanWord2000', 'prvTidyFixLanguageInformation', 'prvTidyCleanDocument']

6105 6260 tidyDocCleanAndRepair call site: 00000 /src/tidy-html5/src/tidylib.c:2121
3509 3509 1 :

['prvTidyParseDocument']

3509 3528 prvTidyDocParseStream call site: 00000 /src/tidy-html5/src/tidylib.c:1500
369 369 1 :

['GetCDATA']

369 369 prvTidyGetToken call site: 00000 /src/tidy-html5/src/lexer.c:2493
349 486 4 :

['prvTidyIsUrl', 'prvTidytmbstrncmp', 'prvTidyIsScript', 'prvTidyReport']

349 524 ParseValue call site: 00000 /src/tidy-html5/src/lexer.c:4073
134 134 1 :

['WrapLine']

134 134 CheckWrapLine call site: 00000 /src/tidy-html5/src/pprint.c:682
134 134 1 :

['WrapLine']

134 134 CheckWrapIndent call site: 00000 /src/tidy-html5/src/pprint.c:698
125 125 1 :

['prvTidyReportBadArgument']

125 125 tidySetCharEncoding call site: 00000 /src/tidy-html5/src/tidylib.c:277
123 123 1 :

['prvTidyReportEncodingWarning']

123 123 prvTidyReadBOMEncoding call site: 00000 /src/tidy-html5/src/streamio.c:192
100 100 1 :

['WriteIndentChar']

100 294 PFlushLineImpl call site: 00000 /src/tidy-html5/src/pprint.c:828
97 97 1 :

['prvTidyoutBOM']

2118 3108 tidyDocSaveStream call site: 00000 /src/tidy-html5/src/tidylib.c:2316
92 92 1 :

['prvTidyDropFontElements']

2346 3432 tidyDocSaveStream call site: 00000 /src/tidy-html5/src/tidylib.c:2295
81 81 1 :

['prvTidyDropComments']

2427 3513 tidyDocSaveStream call site: 00000 /src/tidy-html5/src/tidylib.c:2292

Fuzzer calltree

0 LLVMFuzzerTestOneInput [function] [call site] 00000
1 tidyCreate [function] [call site] 00001
2 tidyDocCreate [function] [call site] 00002
3 prvTidyInitTags [function] [call site] 00011
4 NewDict [function] [call site] 00012
5 prvTidytmbstrdup [function] [call site] 00013
6 prvTidytmbstrlen [function] [call site] 00014
3 prvTidyInitAttrs [function] [call site] 00015
3 prvTidyInitConfig [function] [call site] 00016
4 prvTidyResetConfigToDefault [function] [call site] 00017
5 __assert_fail [call site] 00018
5 GetOptionDefault [function] [call site] 00019
5 CopyOptionValue [function] [call site] 00020
6 __assert_fail [call site] 00021
6 OptionChangedValuesDiffer [function] [call site] 00022
7 prvTidytmbstrcmp [function] [call site] 00023
6 FreeOptionValue [function] [call site] 00024
6 prvTidytmbstrdup [function] [call site] 00025
6 PerformOptionChangedCallback [function] [call site] 00026
5 prvTidyFreeDeclaredTags [function] [call site] 00027
6 tagsRemoveFromHash [function] [call site] 00028
7 prvTidytmbstrcmp [function] [call site] 00030
3 prvTidyInitPrintBuf [function] [call site] 00032
4 InitIndent [function] [call site] 00033
4 InitIndent [function] [call site] 00034
3 prvTidyInitParserStack [function] [call site] 00035
3 prvTidytidyGetLanguageSetByUser [function] [call site] 00036
3 getenv [call site] 00037
3 prvTidytidySetLanguage [function] [call site] 00038
4 prvTidytidyNormalizedLocaleName [function] [call site] 00039
5 prvTidytmbstrdup [function] [call site] 00040
5 prvTidytmbstrtolower [function] [call site] 00041
6 prvTidyToLower [function] [call site] 00042
5 strcmp [call site] 00043
5 prvTidytmbstrdup [function] [call site] 00044
5 strlen [call site] 00045
5 tolower [call site] 00046
4 prvTidytidyTestLanguage [function] [call site] 00047
5 strcmp [call site] 00048
4 strlen [call site] 00049
4 strncpy [call site] 00050
4 prvTidytidyTestLanguage [function] [call site] 00051
3 getenv [call site] 00052
3 prvTidytidySetLanguage [function] [call site] 00053
3 prvTidyStdErrOutput [function] [call site] 00054
1 fuzzer_get_tmpfile [function] [call site] 00055
2 strdup [call site] 00056
2 perror [call site] 00057
2 abort [call site] 00058
2 mkstemp [call site] 00059
2 perror [call site] 00060
2 abort [call site] 00061
2 fdopen [call site] 00062
2 perror [call site] 00063
2 close [call site] 00064
2 abort [call site] 00065
2 fwrite [call site] 00066
2 close [call site] 00067
2 fprintf [call site] 00068
2 abort [call site] 00069
2 fclose [call site] 00070
1 tidyLoadConfig [function] [call site] 00071
2 prvTidyParseConfigFile [function] [call site] 00072
3 prvTidyParseConfigFileEnc [function] [call site] 00073
4 ExpandTilde [function] [call site] 00074
5 getenv [call site] 00075
5 getpwnam [call site] 00076
5 prvTidytmbstrlen [function] [call site] 00077
5 prvTidytmbstrcpy [function] [call site] 00078
5 prvTidytmbstrcat [function] [call site] 00079
4 fopen [call site] 00080
4 prvTidyCharEncodingId [function] [call site] 00081
5 prvTidyGetCharEncodingFromOptName [function] [call site] 00082
6 prvTidytmbstrcasecmp [function] [call site] 00083
7 prvTidyToLower [function] [call site] 00084
4 prvTidyReportFileError [function] [call site] 00085
5 prvTidyReport [function] [call site] 00086
6 vReport [function] [call site] 00087
7 messageOut [function] [call site] 00088
8 prvTidyWriteChar [function] [call site] 00089
9 prvTidyWriteChar [function] [call site] 00090
10 EncodeMacRoman [function] [call site] 00091
11 PutByte [function] [call site] 00092
12 tidyPutByte [function] [call site] 00093
10 EncodeWin1252 [function] [call site] 00095
10 EncodeIbm858 [function] [call site] 00098
10 EncodeLatin0 [function] [call site] 00101
10 prvTidyEncodeCharToUTF8Bytes [function] [call site] 00103
10 prvTidyIsValidUTF16FromUCS4 [function] [call site] 00106
10 prvTidyIsCombinedChar [function] [call site] 00107
10 prvTidySplitSurrogatePair [function] [call site] 00108
11 prvTidyIsValidCombinedChar [function] [call site] 00109
8 prvTidyWriteChar [function] [call site] 00118
8 prvTidytidyMessageRelease [function] [call site] 00119
4 prvTidyFileInput [function] [call site] 00121
5 prvTidyinitStreamIn [function] [call site] 00122
6 InitLastPos [function] [call site] 00123
5 prvTidyinitFileSource [function] [call site] 00124
6 fileno [call site] 00125
6 fstat [call site] 00126
6 mmap [call site] 00127
6 prvTidyinitStdIOFileSource [function] [call site] 00128
6 fclose [call site] 00129
5 prvTidyfreeStreamIn [function] [call site] 00130
4 FirstChar [function] [call site] 00131
5 GetC [function] [call site] 00132
6 prvTidyReadChar [function] [call site] 00133
7 PopChar [function] [call site] 00134
8 __assert_fail [call site] 00135
8 PopLastPos [function] [call site] 00136
8 PopLastPos [function] [call site] 00137
7 SaveLastPos [function] [call site] 00138
8 PopLastPos [function] [call site] 00139
7 ReadCharFromStream [function] [call site] 00140
8 prvTidyIsEOF [function] [call site] 00141
9 tidyIsEOF [function] [call site] 00142
8 ReadByte [function] [call site] 00143
9 tidyGetByte [function] [call site] 00144
8 prvTidyDecodeUTF8BytesToChar [function] [call site] 00147
8 prvTidyReportEncodingError [function] [call site] 00148
9 prvTidyReport [function] [call site] 00149
7 ReadCharFromStream [function] [call site] 00151
7 prvTidyUngetChar [function] [call site] 00152
8 RestoreLastPos [function] [call site] 00153
7 prvTidyIsValidUTF16FromUCS4 [function] [call site] 00154
7 prvTidyReportEncodingError [function] [call site] 00155
7 prvTidyIsLowSurrogate [function] [call site] 00156
7 ReadCharFromStream [function] [call site] 00157
7 prvTidyIsHighSurrogate [function] [call site] 00158
7 prvTidyCombineSurrogatePair [function] [call site] 00159
8 prvTidyIsHighSurrogate [function] [call site] 00160
8 prvTidyIsLowSurrogate [function] [call site] 00161
8 __assert_fail [call site] 00162
7 prvTidyIsValidCombinedChar [function] [call site] 00163
7 prvTidyReportEncodingError [function] [call site] 00164
7 prvTidyDecodeMacRoman [function] [call site] 00165
7 DecodeIbm850 [function] [call site] 00166
7 DecodeLatin0 [function] [call site] 00167
7 prvTidyDecodeMacRoman [function] [call site] 00168
7 prvTidyDecodeWin1252 [function] [call site] 00169
7 prvTidyReportEncodingError [function] [call site] 00170
7 prvTidyReportEncodingError [function] [call site] 00171
4 SkipWhite [function] [call site] 00172
5 prvTidyIsWhite [function] [call site] 00173
5 prvTidyIsNewline [function] [call site] 00174
4 isOptionDeprecated [function] [call site] 00178
5 getOptionReplacement [function] [call site] 00179
6 prvTidytmbstrcasecmp [function] [call site] 00180
4 prvTidylookupOption [function] [call site] 00181
5 prvTidytmbstrcasecmp [function] [call site] 00182
4 AdvanceChar [function] [call site] 00183
4 SkipWhite [function] [call site] 00184
4 AdvanceChar [function] [call site] 00185
4 prvTidyIsWhite [function] [call site] 00186
4 AdvanceChar [function] [call site] 00187
4 AdvanceChar [function] [call site] 00188
4 subDeprecatedOption [function] [call site] 00189
5 getOptionReplacement [function] [call site] 00190
5 prvTidygetOption [function] [call site] 00191
5 isOptionDeprecated [function] [call site] 00192
5 __assert_fail [call site] 00193
5 prvTidyReport [function] [call site] 00194
5 prvTidytmbstrcasecmp [function] [call site] 00195
5 GetPickListValue [function] [call site] 00196
6 prvTidytmbstrcasecmp [function] [call site] 00197
5 prvTidySetOptionInt [function] [call site] 00198
6 __assert_fail [call site] 00199
6 SetOptionInteger [function] [call site] 00200
7 PerformOptionChangedCallback [function] [call site] 00201
5 prvTidyReport [function] [call site] 00202
5 prvTidySetOptionInt [function] [call site] 00203
5 tidyOptGetCurrPick [function] [call site] 00204
6 tidyOptGetInt [function] [call site] 00205
6 prvTidyGetPickListLabelForPick [function] [call site] 00206
7 prvTidygetOption [function] [call site] 00207
5 prvTidyReport [function] [call site] 00208
5 prvTidyReportBadArgument [function] [call site] 00209
6 __assert_fail [call site] 00210
6 prvTidyReport [function] [call site] 00211
4 prvTidyReportUnknownOption [function] [call site] 00212
5 prvTidyReport [function] [call site] 00213
4 prvTidyReportUnknownOption [function] [call site] 00214
4 prvTidyfreeFileSource [function] [call site] 00220
5 munmap [call site] 00221
5 prvTidyfreeStdIOFileSource [function] [call site] 00222
6 fclose [call site] 00223
6 tidyBufFree [function] [call site] 00224
7 __assert_fail [call site] 00225
7 tidyBufInitWithAllocator [function] [call site] 00226
8 __assert_fail [call site] 00227
4 prvTidyfreeStreamIn [function] [call site] 00228
1 fuzzer_release_tmpfile [function] [call site] 00229
2 unlink [call site] 00230
2 perror [call site] 00231
1 tidyRelease [function] [call site] 00232
2 tidyDocRelease [function] [call site] 00233
3 __assert_fail [call site] 00234
3 __assert_fail [call site] 00235
3 prvTidyReleaseStreamOut [function] [call site] 00236
4 fclose [call site] 00237
3 prvTidyFreePrintBuf [function] [call site] 00238
4 prvTidyInitPrintBuf [function] [call site] 00239
3 prvTidyFreeNode [function] [call site] 00240
4 prvTidyFreeAttrs [function] [call site] 00241
5 prvTidyIsAnchorElement [function] [call site] 00242
5 prvTidyRemoveAnchorByNode [function] [call site] 00243
6 prvTidyHTMLVersion [function] [call site] 00244
6 anchorNameHash5 [function] [call site] 00245
6 anchorNameHash [function] [call site] 00246
7 prvTidyToLower [function] [call site] 00247
6 FreeAnchor [function] [call site] 00248
5 prvTidyFreeAttribute [function] [call site] 00249
6 prvTidyFreeNode [function] [call site] 00250
7 prvTidyFreeNode [function] [call site] 00251
6 prvTidyFreeNode [function] [call site] 00252
3 prvTidyFreeConfig [function] [call site] 00253
4 prvTidyResetConfigToDefault [function] [call site] 00254
4 prvTidyTakeConfigSnapshot [function] [call site] 00255
5 __assert_fail [call site] 00256
5 CopyOptionValue [function] [call site] 00257
3 prvTidyFreeAttrTable [function] [call site] 00258
4 attrsEmptyHash [function] [call site] 00259
4 prvTidyFreeAnchors [function] [call site] 00260
5 FreeAnchor [function] [call site] 00261
4 FreeDeclaredAttributes [function] [call site] 00262
5 attrsRemoveFromHash [function] [call site] 00263
6 attrsHash [function] [call site] 00264
6 prvTidytmbstrcmp [function] [call site] 00265
3 prvTidyFreeAttrPriorityList [function] [call site] 00266
3 prvTidyFreeMutedMessageList [function] [call site] 00267
3 prvTidyFreeTags [function] [call site] 00268
4 tagsEmptyHash [function] [call site] 00269
4 prvTidyFreeDeclaredTags [function] [call site] 00270
3 prvTidyFreeLexer [function] [call site] 00272
4 prvTidyFreeStyles [function] [call site] 00273
4 prvTidyFreeNode [function] [call site] 00274
4 prvTidyFreeNode [function] [call site] 00275
4 prvTidyPopInline [function] [call site] 00276
5 IsNodePushable [function] [call site] 00277
5 PopIStackUntil [function] [call site] 00278
6 PopIStack [function] [call site] 00279
7 prvTidyFreeAttribute [function] [call site] 00280
5 PopIStack [function] [call site] 00281
3 prvTidyFreeParserStack [function] [call site] 00282