diff options
author | Andres Mejia <amejia004@gmail.com> | 2012-05-09 23:24:54 -0400 |
---|---|---|
committer | Andres Mejia <amejia004@gmail.com> | 2012-05-09 23:28:19 -0400 |
commit | da85867e59d0ebbc02360a0711ac3c362a6d0156 (patch) | |
tree | 253be7ba6406403dbe8d1453c7720398c36b6c62 | |
parent | aacfed85daba2737c368ccc33aeaa7793889d203 (diff) |
Fix issue where parsing XML character entries are ignored. Fixes issue #12999.
-rw-r--r-- | xbmc/utils/XBMCTinyXML.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/xbmc/utils/XBMCTinyXML.cpp b/xbmc/utils/XBMCTinyXML.cpp index 6e8ac4a7ed..82e24514f9 100644 --- a/xbmc/utils/XBMCTinyXML.cpp +++ b/xbmc/utils/XBMCTinyXML.cpp @@ -21,7 +21,7 @@ #include "filesystem/File.h" #include "RegExp.h" -#define MAX_ENTITY_LENGTH 6 // size of largest entity "'" +#define MAX_ENTITY_LENGTH 8 // size of largest entity "&#xNNNN;" #define BUFFER_SIZE 4096 CXBMCTinyXML::CXBMCTinyXML() @@ -130,7 +130,7 @@ const char *CXBMCTinyXML::Parse(CStdString &data, TiXmlParsingData *prevData, Ti // Preprocess string, replacing '&' with '& for invalid XML entities size_t pos = 0; CRegExp re(true); - re.RegComp("^&(amp|lt|gt|quot|apos);.*"); + re.RegComp("^&(amp|lt|gt|quot|apos|#x[a-fA-F0-9]{1,4});.*"); while ((pos = data.find("&", pos)) != CStdString::npos) { CStdString tmp = data.substr(pos, pos + MAX_ENTITY_LENGTH); @@ -149,7 +149,7 @@ bool CXBMCTinyXML::Test() "cache=\"tmdb-en-12244.json\">" "http://api.themoviedb.org/3/movie/12244" "?api_key=57983e31fb435df4df77afb854740ea9" - "&language=en</url></details>"); + "&language=enaf;Ư</url></details>"); doc.Parse(data.c_str()); TiXmlNode *root = doc.RootElement(); if (root && root->ValueStr() == "details") |