From 01e8fbaf76fc3cd1fc3120c73a7854fefeba2bd1 Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 25 Mar 2009 17:49:14 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45332 When reading tomcat-users.xml try to ensure the digester supports the java encoding names. The windows installer will often use these names. The JVM does this by default. If the endorsed mechanism is used, an alternative parser may not support the Java encodings. This fix will only work for xerces. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@758365 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/realm/LocalStrings.properties | 1 + java/org/apache/catalina/realm/MemoryRealm.java | 7 +++++++ java/org/apache/catalina/users/LocalStrings.properties | 1 + java/org/apache/catalina/users/MemoryUserDatabase.java | 7 +++++++ 4 files changed, 16 insertions(+) diff --git a/java/org/apache/catalina/realm/LocalStrings.properties b/java/org/apache/catalina/realm/LocalStrings.properties index 88b42e4a5..6c4c7cf73 100644 --- a/java/org/apache/catalina/realm/LocalStrings.properties +++ b/java/org/apache/catalina/realm/LocalStrings.properties @@ -64,6 +64,7 @@ memoryRealm.authenticateSuccess=Username {0} successfully authenticated memoryRealm.loadExist=Memory database file {0} cannot be read memoryRealm.loadPath=Loading users from memory database file {0} memoryRealm.readXml=Exception while reading memory database file +memoryRealm.xmlFeatureEncoding=Exception configuring digester to permit java encoding names in XML files. Only IANA encoding names will be supported. realmBase.algorithm=Invalid message digest algorithm {0} specified realmBase.alreadyStarted=This Realm has already been started realmBase.digest=Error digesting user credentials diff --git a/java/org/apache/catalina/realm/MemoryRealm.java b/java/org/apache/catalina/realm/MemoryRealm.java index 343a8d45d..7a8bd0fcc 100644 --- a/java/org/apache/catalina/realm/MemoryRealm.java +++ b/java/org/apache/catalina/realm/MemoryRealm.java @@ -215,6 +215,13 @@ public class MemoryRealm extends RealmBase { if (digester == null) { digester = new Digester(); digester.setValidating(false); + try { + digester.setFeature( + "http://apache.org/xml/features/allow-java-encodings", + true); + } catch (Exception e) { + log.warn(sm.getString("memoryRealm.xmlFeatureEncoding"), e); + } digester.addRuleSet(new MemoryRuleSet()); } return (digester); diff --git a/java/org/apache/catalina/users/LocalStrings.properties b/java/org/apache/catalina/users/LocalStrings.properties index 117f165c8..d13ba3953 100644 --- a/java/org/apache/catalina/users/LocalStrings.properties +++ b/java/org/apache/catalina/users/LocalStrings.properties @@ -19,3 +19,4 @@ memoryUserDatabase.renameNew=Cannot rename new file to {0} memoryUserDatabase.writeException=IOException writing to {0} memoryUserDatabase.notPersistable=User database is not persistable - no write permissions on directory memoryUserDatabase.readOnly=User database has been configured to be read only. Changes cannot be saved +memoryUserDatabase.xmlFeatureEncoding=Exception configuring digester to permit java encoding names in XML files. Only IANA encoding names will be supported. diff --git a/java/org/apache/catalina/users/MemoryUserDatabase.java b/java/org/apache/catalina/users/MemoryUserDatabase.java index b9199cb81..c4c807792 100644 --- a/java/org/apache/catalina/users/MemoryUserDatabase.java +++ b/java/org/apache/catalina/users/MemoryUserDatabase.java @@ -387,6 +387,13 @@ public class MemoryUserDatabase implements UserDatabase { // Construct a digester to read the XML input file Digester digester = new Digester(); + try { + digester.setFeature( + "http://apache.org/xml/features/allow-java-encodings", + true); + } catch (Exception e) { + log.warn(sm.getString("memoryUserDatabase.xmlFeatureEncoding"), e); + } digester.addFactoryCreate ("tomcat-users/group", new MemoryGroupCreationFactory(this)); -- 2.11.0