1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-10-26 00:37:43 +03:00

fuzz: Move back to xmlSetExternalEntityLoader

xmlParserInputBufferCreateFilenameDefault can't report malloc failures.
This commit is contained in:
Nick Wellnhofer
2024-05-19 19:31:54 +02:00
parent 4fefba4cf6
commit caa8bb3848
11 changed files with 36 additions and 13 deletions

View File

@@ -391,8 +391,10 @@ xmlFuzzMainEntity(size_t *size) {
*
* The entity loader for fuzz data.
*/
xmlParserInputBufferPtr
xmlFuzzEntityLoader(const char *URL, xmlCharEncoding enc) {
xmlParserInputPtr
xmlFuzzEntityLoader(const char *URL, const char *ID ATTRIBUTE_UNUSED,
xmlParserCtxtPtr ctxt) {
xmlParserInputPtr input;
xmlFuzzEntityInfo *entity;
if (URL == NULL)
@@ -401,7 +403,26 @@ xmlFuzzEntityLoader(const char *URL, xmlCharEncoding enc) {
if (entity == 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 *