File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -988,6 +988,15 @@ Kumu::XMLElement::ParseString(const char* document, ui32_t doc_len)
988988 return errorCount > 0 ? false : true ;
989989}
990990
991+
992+ class IgnoreDTDResolver : public xercesc ::EntityResolver {
993+ public:
994+ InputSource* resolveEntity (const XMLCh* const , const XMLCh* const ) override {
995+ static const XMLByte dummy[] = " " ;
996+ return new xercesc::MemBufInputSource (dummy, 0 , " dummy-dtd" , false );
997+ }
998+ };
999+
9911000//
9921001bool
9931002Kumu::XMLElement::ParseFirstFromString (const char * document, ui32_t doc_len)
@@ -1002,14 +1011,18 @@ Kumu::XMLElement::ParseFirstFromString(const char* document, ui32_t doc_len)
10021011 int errorCount = 0 ;
10031012 SAXParser* parser = new SAXParser ();
10041013
1005- parser->setValidationScheme (SAXParser::Val_Always );
1014+ parser->setValidationScheme (SAXParser::Val_Never );
10061015 parser->setDoNamespaces (true ); // optional
10071016
10081017 MyTreeHandler* docHandler = new MyTreeHandler (this );
10091018 parser->setDocumentHandler (docHandler);
10101019 parser->setErrorHandler (docHandler);
10111020 XMLPScanToken token;
10121021
1022+ // Ignore references to DTD files
1023+ IgnoreDTDResolver resolver;
1024+ parser->setEntityResolver (&resolver);
1025+
10131026 try
10141027 {
10151028 MemBufInputSource xmlSource (reinterpret_cast <const XMLByte*>(document),
You can’t perform that action at this time.
0 commit comments