blob: 5e4c099cee500b1ca75a867bacae221dabc4265b [file] [log] [blame]
/*
* uri.c: a libFuzzer target to test the URI module.
*
* See Copyright for the status of this software.
*/
#include <libxml/uri.h>
#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;
}