mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
fuzz: Move back to xmlSetExternalEntityLoader
xmlParserInputBufferCreateFilenameDefault can't report malloc failures.
This commit is contained in:
@@ -964,7 +964,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
27
fuzz/fuzz.c
27
fuzz/fuzz.c
@@ -391,8 +391,10 @@ xmlFuzzMainEntity(size_t *size) {
|
|||||||
*
|
*
|
||||||
* The entity loader for fuzz data.
|
* The entity loader for fuzz data.
|
||||||
*/
|
*/
|
||||||
xmlParserInputBufferPtr
|
xmlParserInputPtr
|
||||||
xmlFuzzEntityLoader(const char *URL, xmlCharEncoding enc) {
|
xmlFuzzEntityLoader(const char *URL, const char *ID ATTRIBUTE_UNUSED,
|
||||||
|
xmlParserCtxtPtr ctxt) {
|
||||||
|
xmlParserInputPtr input;
|
||||||
xmlFuzzEntityInfo *entity;
|
xmlFuzzEntityInfo *entity;
|
||||||
|
|
||||||
if (URL == NULL)
|
if (URL == NULL)
|
||||||
@@ -401,7 +403,26 @@ xmlFuzzEntityLoader(const char *URL, xmlCharEncoding enc) {
|
|||||||
if (entity == NULL)
|
if (entity == NULL)
|
||||||
return(NULL);
|
return(NULL);
|
||||||
|
|
||||||
return(xmlParserInputBufferCreateMem(entity->data, entity->size, enc));
|
input = xmlNewInputStream(ctxt);
|
||||||
|
if (input == NULL)
|
||||||
|
return(NULL);
|
||||||
|
input->filename = (char *) xmlCharStrdup(URL);
|
||||||
|
if (input->filename == NULL) {
|
||||||
|
xmlCtxtErrMemory(ctxt);
|
||||||
|
xmlFreeInputStream(input);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
input->buf = xmlParserInputBufferCreateMem(entity->data, entity->size,
|
||||||
|
XML_CHAR_ENCODING_NONE);
|
||||||
|
if (input->buf == NULL) {
|
||||||
|
xmlCtxtErrMemory(ctxt);
|
||||||
|
xmlFreeInputStream(input);
|
||||||
|
return(NULL);
|
||||||
|
}
|
||||||
|
input->base = input->cur = xmlBufContent(input->buf->buffer);
|
||||||
|
input->end = input->base + xmlBufUse(input->buf->buffer);
|
||||||
|
|
||||||
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ xmlFuzzMainUrl(void);
|
|||||||
const char *
|
const char *
|
||||||
xmlFuzzMainEntity(size_t *size);
|
xmlFuzzMainEntity(size_t *size);
|
||||||
|
|
||||||
xmlParserInputBufferPtr
|
xmlParserInputPtr
|
||||||
xmlFuzzEntityLoader(const char *URL, xmlCharEncoding enc);
|
xmlFuzzEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt);
|
||||||
|
|
||||||
char *
|
char *
|
||||||
xmlSlurpFile(const char *path, size_t *size);
|
xmlSlurpFile(const char *path, size_t *size);
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ LLVMFuzzerTestOneInput(const char *data, size_t size) {
|
|||||||
pushArg(NULL);
|
pushArg(NULL);
|
||||||
|
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
#ifdef LIBXML_CATALOG_ENABLED
|
#ifdef LIBXML_CATALOG_ENABLED
|
||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ testEntityLoader(void) {
|
|||||||
xmlDocPtr doc;
|
xmlDocPtr doc;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
xmlFuzzDataInit(data, sizeof(data) - 1);
|
xmlFuzzDataInit(data, sizeof(data) - 1);
|
||||||
xmlFuzzReadEntities();
|
xmlFuzzReadEntities();
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ LLVMFuzzerInitialize(int *argc ATTRIBUTE_UNUSED,
|
|||||||
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
xmlCatalogSetDefaults(XML_CATA_ALLOW_NONE);
|
||||||
#endif
|
#endif
|
||||||
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
|
||||||
xmlParserInputBufferCreateFilenameDefault(xmlFuzzEntityLoader);
|
xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3506,7 +3506,9 @@ xmllintMain(int argc, const char **argv) {
|
|||||||
else if ((!strcmp(argv[i], "-nonet")) ||
|
else if ((!strcmp(argv[i], "-nonet")) ||
|
||||||
(!strcmp(argv[i], "--nonet"))) {
|
(!strcmp(argv[i], "--nonet"))) {
|
||||||
options |= XML_PARSE_NONET;
|
options |= XML_PARSE_NONET;
|
||||||
|
#ifndef XMLLINT_FUZZ
|
||||||
xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
|
xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
|
||||||
|
#endif
|
||||||
} else if ((!strcmp(argv[i], "-nocompact")) ||
|
} else if ((!strcmp(argv[i], "-nocompact")) ||
|
||||||
(!strcmp(argv[i], "--nocompact"))) {
|
(!strcmp(argv[i], "--nocompact"))) {
|
||||||
options &= ~XML_PARSE_COMPACT;
|
options &= ~XML_PARSE_COMPACT;
|
||||||
|
|||||||
Reference in New Issue
Block a user