https://issues.shibboleth.net/jira/browse/CPPXT-96
authorScott Cantor <cantor.2@osu.edu>
Wed, 22 May 2013 18:43:57 +0000 (18:43 +0000)
committerScott Cantor <cantor.2@osu.edu>
Wed, 22 May 2013 18:43:57 +0000 (18:43 +0000)
xmltooling/internal.h
xmltooling/util/ParserPool.cpp

index bf879f3..c39bb8d 100644 (file)
@@ -55,6 +55,8 @@
 
 #define XMLTOOLING_LOGCAT "XMLTooling"
 
+#define XMLTOOLING_ENTITY_EXPANSION_LIMIT 100
+
 // Macros for path and directory separators.
 #if defined __CYGWIN32__ && !defined __CYGWIN__
    /* For backwards compatibility with Cygwin b19 and
index 78d64cc..f6bc369 100644 (file)
@@ -104,7 +104,17 @@ namespace {
 
 
 ParserPool::ParserPool(bool namespaceAware, bool schemaAware)
-    : m_namespaceAware(namespaceAware), m_schemaAware(schemaAware), m_lock(Mutex::create()), m_security(new SecurityManager()) {}
+        : m_namespaceAware(namespaceAware), m_schemaAware(schemaAware), m_lock(Mutex::create()), m_security(new SecurityManager()) {
+
+    int expLimit = 0;
+    const char* env = getenv("XMLTOOLING_ENTITY_EXPANSION_LIMIT");
+    if (env) {
+        expLimit = atoi(env);
+    }
+    if (expLimit <= 0)
+        expLimit = XMLTOOLING_ENTITY_EXPANSION_LIMIT;
+    m_security->setEntityExpansionLimit(expLimit);
+}
 
 ParserPool::~ParserPool()
 {