1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-03-20 18:50:08 +03:00

Pass URL of main entity in XML fuzzer

This commit is contained in:
Nick Wellnhofer 2020-08-24 23:17:34 +02:00
parent 0d5f3710fb
commit 8c3ef083ca

View File

@ -28,7 +28,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) {
xmlParserCtxtPtr ctxt;
xmlTextReaderPtr reader;
xmlChar *out;
const char *docBuffer;
const char *docBuffer, *docUrl;
size_t docSize, consumed, chunkSize;
int opts, outSize;
@ -39,6 +39,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) {
xmlFuzzReadEntities();
docBuffer = xmlFuzzMainEntity(&docSize);
docUrl = xmlFuzzMainUrl();
if (docBuffer == NULL) {
xmlFuzzDataCleanup();
return(0);
@ -46,7 +47,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) {
/* Pull parser */
doc = xmlReadMemory(docBuffer, docSize, NULL, NULL, opts);
doc = xmlReadMemory(docBuffer, docSize, docUrl, NULL, opts);
if (opts & XML_PARSE_XINCLUDE)
xmlXIncludeProcessFlags(doc, opts);
/* Also test the serializer. */
@ -56,7 +57,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) {
/* Push parser */
ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL);
ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, docUrl);
xmlCtxtUseOptions(ctxt, opts);
for (consumed = 0; consumed < docSize; consumed += chunkSize) {