diff options
Diffstat (limited to 'sax')
-rw-r--r-- | sax/source/fastparser/fastparser.cxx | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx index 9b2d9bd97458..04bf69a1705b 100644 --- a/sax/source/fastparser/fastparser.cxx +++ b/sax/source/fastparser/fastparser.cxx @@ -933,6 +933,7 @@ void FastSaxParserImpl::setNamespaceHandler( const Reference< XFastNamespaceHand maData.mxNamespaceHandler = Handler; } +#include <stdio.h> void FastSaxParserImpl::setCustomEntityNames( const ::css::uno::Sequence< ::rtl::OUString >& names, const ::css::uno::Sequence< ::rtl::OUString >& replacements ) { mEntityNames = names; @@ -1368,6 +1369,11 @@ xmlEntityPtr FastSaxParserImpl::callbackGetEntity( const xmlChar *name ) if( !name ) return xmlGetPredefinedEntity(name); const char* dname = XML_CAST(name); + int lname = strlen(dname); + if( lname == 0 ) + return xmlGetPredefinedEntity(name); + if( !mEntityNames.hasElements() ) + return xmlGetPredefinedEntity(name); for( size_t i = 0; i < mEntityNames.size(); ++i ) { if( mEntityNames[i].compareToAscii(dname) == 0 ) @@ -1378,12 +1384,11 @@ xmlEntityPtr FastSaxParserImpl::callbackGetEntity( const xmlChar *name ) BAD_CAST(OUStringToOString(mEntityReplacements[i],RTL_TEXTENCODING_UTF8).getStr())); } } + if( lname < 2 ) + return xmlGetPredefinedEntity(name); if ( dname[0] == '#' ) { sal_uInt32 cval = 0; - int_fast16_t lname = strlen(dname); - if( lname < 2 ) - return xmlGetPredefinedEntity(name); if( dname[1] == 'x' || dname[1] == 'X' ) { if( lname < 3 ) |