aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Mejia <amejia004@gmail.com>2012-05-09 23:24:54 -0400
committerAndres Mejia <amejia004@gmail.com>2012-05-09 23:28:19 -0400
commitda85867e59d0ebbc02360a0711ac3c362a6d0156 (patch)
tree253be7ba6406403dbe8d1453c7720398c36b6c62
parentaacfed85daba2737c368ccc33aeaa7793889d203 (diff)
Fix issue where parsing XML character entries are ignored. Fixes issue #12999.
-rw-r--r--xbmc/utils/XBMCTinyXML.cpp6
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 "&apos;"
+#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 '&amp; 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=en&#01af;&#x01AF;</url></details>");
doc.Parse(data.c_str());
TiXmlNode *root = doc.RootElement();
if (root && root->ValueStr() == "details")