/* * uri.c: a libFuzzer target to test the URI module. * * See Copyright for the status of this software. */ #include #include "fuzz.h" int LLVMFuzzerTestOneInput(const char *data, size_t size) { xmlURIPtr uri; char *str[2] = { NULL, NULL }; size_t numStrings; if (size > 10000) return(0); numStrings = xmlFuzzExtractStrings(data, size, str, 2); uri = xmlParseURI(str[0]); xmlFree(xmlSaveUri(uri)); xmlFreeURI(uri); uri = xmlParseURIRaw(str[0], 1); xmlFree(xmlSaveUri(uri)); xmlFreeURI(uri); xmlFree(xmlURIUnescapeString(str[0], -1, NULL)); xmlFree(xmlURIEscape(BAD_CAST str[0])); xmlFree(xmlCanonicPath(BAD_CAST str[0])); xmlFree(xmlPathToURI(BAD_CAST str[0])); if (numStrings >= 2) { xmlFree(xmlBuildURI(BAD_CAST str[1], BAD_CAST str[0])); xmlFree(xmlBuildRelativeURI(BAD_CAST str[1], BAD_CAST str[0])); xmlFree(xmlURIEscapeStr(BAD_CAST str[0], BAD_CAST str[1])); } /* Modifies string, so must come last. */ xmlNormalizeURIPath(str[0]); xmlFree(str[0]); xmlFree(str[1]); return 0; }