[xml] segfault when calling xmlIOParseDTD


I'm trying to validate an XML document after parsing it. The DTD is external, 
and resides somewhere in the memory (see attached source code).

But when I call xmlIOParseDTD(), I get a segfault. I tracked down the error to 
xmlParseElementDecl(), line 4973

            if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
                (ctxt->sax->elementDecl != NULL))
                ctxt->sax->elementDecl(ctxt->userData, name, ret,

the reason is that userData is NULL, and elementDecl is a pointer to 
xmlSAX2ElementDecl(), which expects a xmlParserCtxtPtr.

Because xmlIOParseDTD creates and handle its own xmlParserCtxt, I'm suspicious 
about the line 9954 in parser.c "ctxt->userData = NULL;" and it might have to 
be something like "ctxt->userData = ctxt;".



Attachment: main.cpp
Description: Text Data

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