[xml] segfault when calling xmlIOParseDTD



Hi,

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

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

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;".

Regards,

Tanguy

Attachment: main.cpp
Description: Text Data



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