[master] segfault on in-context parsing
Commit e0dd330b introduced a bug when calling xmlParseInNodeContext
.
#include <libxml/parser.h>
#include <string.h>
int main(int argc, char **argv) {
fprintf(stderr, "using libxml2 version %s\n", xmlParserVersion);
char *xml = "<fruit xmlns=\"http://example.com/ns/fruit\"/>";
xmlDocPtr document = xmlReadMemory(xml, strlen(xml), NULL, NULL, XML_PARSE_RECOVER);
xmlNodePtr root = xmlDocGetRootElement(document);
char *node_xml = "<orange/>";
xmlNodePtr nodes;
xmlParserErrors error;
error = xmlParseInNodeContext(root, node_xml, strlen(node_xml), XML_PARSE_RECOVER, &nodes);
fprintf(stderr, "return code: %d\n", error);
}
will segfault:
#0 0x00007ffff7e9da01 in xmlParserNsGrow (ctxt=0x5555555592a0) at parser.c:1630
#1 xmlParserNsPush (ctxt=ctxt@entry=0x5555555592a0, prefix=prefix@entry=0x7fffffffd160,
uri=uri@entry=0x7fffffffd170, saxData=saxData@entry=0x55555555c350, defAttr=defAttr@entry=1) at parser.c:1667
#2 0x00007ffff7eae6fc in xmlParseInNodeContext (node=0x55555555c2d0, data=<optimized out>, datalen=<optimized out>,
options=<optimized out>, lst=0x7fffffffd1f0) at parser.c:13204
#3 0x00005555555552b0 in main ()
This appears to be because ctxt->nsdb
is NULL.