diff --git a/SAX2.c b/SAX2.c index d687cca5..e9cd21b3 100644 --- a/SAX2.c +++ b/SAX2.c @@ -1715,10 +1715,8 @@ void xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED) { xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; - xmlNodePtr cur; if (ctx == NULL) return; - cur = ctxt->node; ctxt->nodemem = -1; @@ -1726,7 +1724,7 @@ xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED) if (ctxt->validate && ctxt->wellFormed && ctxt->myDoc && ctxt->myDoc->intSubset) ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc, - cur); + ctxt->node); #endif /* LIBXML_VALID_ENABLED */ diff --git a/fuzz/fuzz.h b/fuzz/fuzz.h index 0668b2fb..0edbd2e3 100644 --- a/fuzz/fuzz.h +++ b/fuzz/fuzz.h @@ -39,7 +39,7 @@ extern "C" { defined(LIBXML_READER_ENABLED) #define HAVE_XML_FUZZER #endif -#if defined(LIBXML_XPATH_ENABLED) +#if defined(LIBXML_XPTR_ENABLED) #define HAVE_XPATH_FUZZER #endif diff --git a/fuzz/html.c b/fuzz/html.c index a2bd97a3..8fde23c3 100644 --- a/fuzz/html.c +++ b/fuzz/html.c @@ -32,6 +32,11 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) { size_t maxAlloc, docSize, consumed, chunkSize; int opts; + (void) maxChunkSize; + (void) ctxt; + (void) consumed; + (void) chunkSize; + xmlFuzzDataInit(data, size); opts = (int) xmlFuzzReadInt(4); maxAlloc = xmlFuzzReadInt(4) % (size + 1); @@ -60,6 +65,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) { /* Push parser */ +#ifdef LIBXML_PUSH_ENABLED xmlFuzzMemSetLimit(maxAlloc); ctxt = htmlCreatePushParserCtxt(NULL, NULL, NULL, 0, NULL, XML_CHAR_ENCODING_NONE); @@ -78,6 +84,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) { xmlFreeDoc(ctxt->myDoc); htmlFreeParserCtxt(ctxt); } +#endif /* Cleanup */ diff --git a/fuzz/xml.c b/fuzz/xml.c index 0ac765da..61055d02 100644 --- a/fuzz/xml.c +++ b/fuzz/xml.c @@ -58,6 +58,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) { /* Push parser */ +#ifdef LIBXML_PUSH_ENABLED xmlFuzzMemSetLimit(maxAlloc); ctxt = xmlCreatePushParserCtxt(NULL, NULL, NULL, 0, docUrl); if (ctxt == NULL) @@ -70,6 +71,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) { chunkSize = maxChunkSize; xmlParseChunk(ctxt, docBuffer + consumed, chunkSize, 0); } +#endif xmlParseChunk(ctxt, NULL, 0, 1); xmlFreeDoc(ctxt->myDoc); diff --git a/include/libxml/HTMLparser.h b/include/libxml/HTMLparser.h index 220a7121..41f44e92 100644 --- a/include/libxml/HTMLparser.h +++ b/include/libxml/HTMLparser.h @@ -80,8 +80,12 @@ struct _htmlEntityDesc { const char *desc; /* the description */ }; -#define XML_GLOBALS_HTML \ - XML_OP(htmlDefaultSAXHandler, xmlSAXHandlerV1, XML_DEPRECATED) +#ifdef LIBXML_SAX1_ENABLED + #define XML_GLOBALS_HTML \ + XML_OP(htmlDefaultSAXHandler, xmlSAXHandlerV1, XML_DEPRECATED) +#else + #define XML_GLOBALS_HTML +#endif #define XML_OP XML_DECLARE_GLOBAL XML_GLOBALS_HTML diff --git a/include/libxml/parser.h b/include/libxml/parser.h index 7a005a4b..e9b6bd56 100644 --- a/include/libxml/parser.h +++ b/include/libxml/parser.h @@ -818,9 +818,8 @@ XMLPUBVAR const char *const xmlParserVersion; XMLPUBFUN const char *const *__xmlParserVersion(void); #endif -#define XML_GLOBALS_PARSER \ +#define XML_GLOBALS_PARSER_CORE \ XML_OP(oldXMLWDcompatibility, int, XML_DEPRECATED) \ - XML_OP(xmlDefaultSAXHandler, xmlSAXHandlerV1, XML_DEPRECATED) \ XML_OP(xmlDefaultSAXLocator, xmlSAXLocator, XML_DEPRECATED) \ XML_OP(xmlDoValidityCheckingDefaultValue, int, XML_DEPRECATED) \ XML_OP(xmlGetWarningsDefaultValue, int, XML_DEPRECATED) \ @@ -831,6 +830,17 @@ XMLPUBFUN const char *const *__xmlParserVersion(void); XML_OP(xmlPedanticParserDefaultValue, int, XML_DEPRECATED) \ XML_OP(xmlSubstituteEntitiesDefaultValue, int, XML_DEPRECATED) +#ifdef LIBXML_SAX1_ENABLED + #define XML_GLOBALS_PARSER_SAX1 \ + XML_OP(xmlDefaultSAXHandler, xmlSAXHandlerV1, XML_DEPRECATED) +#else + #define XML_GLOBALS_PARSER_SAX1 +#endif + +#define XML_GLOBALS_PARSER \ + XML_GLOBALS_PARSER_CORE \ + XML_GLOBALS_PARSER_SAX1 + #define XML_OP XML_DECLARE_GLOBAL XML_GLOBALS_PARSER #undef XML_OP diff --git a/runtest.c b/runtest.c index 58264980..ed1dfab0 100644 --- a/runtest.c +++ b/runtest.c @@ -2470,6 +2470,7 @@ errParseTest(const char *filename, const char *result, const char *err, return(0); } +#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_HTML_ENABLED) /** * fdParseTest: * @filename: the file to parse @@ -2534,7 +2535,7 @@ fdParseTest(const char *filename, const char *result, const char *err, return(0); } - +#endif #ifdef LIBXML_READER_ENABLED diff --git a/runxmlconf.c b/runxmlconf.c index 6b76c508..cb1ef5e0 100644 --- a/runxmlconf.c +++ b/runxmlconf.c @@ -9,7 +9,7 @@ #include #include -#ifdef LIBXML_XPATH_ENABLED +#if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_VALID_ENABLED) #include #include @@ -594,7 +594,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { #else /* ! LIBXML_XPATH_ENABLED */ int main(int argc ATTRIBUTE_UNUSED, char **argv) { - fprintf(stderr, "%s need XPath support\n", argv[0]); + fprintf(stderr, "%s need XPath and validation support\n", argv[0]); return(0); } #endif diff --git a/xmlsave.c b/xmlsave.c index 956d5c90..8f1c66af 100644 --- a/xmlsave.c +++ b/xmlsave.c @@ -2256,6 +2256,8 @@ xmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, int is_xhtml = 0; #endif + (void) doc; + xmlInitParser(); if ((buf == NULL) || (cur == NULL)) return;