[libxml2] Pass URL of main entity in XML fuzzer



commit 8c3ef083ca6806b48e1fca94213993a6669e1c08
Author: Nick Wellnhofer <wellnhofer aevum de>
Date:   Mon Aug 24 23:17:34 2020 +0200

    Pass URL of main entity in XML fuzzer

 fuzz/xml.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/fuzz/xml.c b/fuzz/xml.c
index f3e74ef84..09867cf74 100644
--- a/fuzz/xml.c
+++ b/fuzz/xml.c
@@ -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) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]