Author: markt
Date: Thu Jan 13 17:55:55 2011
New Revision: 1058689

URL: http://svn.apache.org/viewvc?rev=1058689&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=18797
Provide null/zero-length protection

Modified:
    tomcat/trunk/java/org/apache/catalina/users/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/users/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/users/LocalStrings.properties?rev=1058689&r1=1058688&r2=1058689&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/users/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/catalina/users/LocalStrings.properties Thu Jan 
13 17:55:55 2011
@@ -14,9 +14,12 @@
 # limitations under the License.
 
 memoryUserDatabase.invalidGroup=Invalid group name {0}
+memoryUserDatabase.notPersistable=User database is not persistable - no write 
permissions on directory
+memoryUserDatabase.nullGroup=Null or zero length group name specified. The 
group will be ignored.
+memoryUserDatabase.nullRole=Null or zero length role name specified. The role 
will be ignored.
+memoryUserDatabase.nullUser=Null or zero length user name specified. The user 
will be ignored.
+memoryUserDatabase.readOnly=User database has been configured to be read only. 
Changes cannot be saved
 memoryUserDatabase.renameOld=Cannot rename original file to {0}
 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.

Modified: tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java?rev=1058689&r1=1058688&r2=1058689&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java Thu Jan 
13 17:55:55 2011
@@ -272,6 +272,12 @@ public class MemoryUserDatabase implemen
      */
     public Group createGroup(String groupname, String description) {
 
+        if (groupname == null || groupname.length() == 0) {
+            String msg = sm.getString("memoryUserDatabase.nullGroup");
+            log.warn(msg);
+            throw new IllegalArgumentException(msg);
+        }
+
         MemoryGroup group = new MemoryGroup(this, groupname, description);
         synchronized (groups) {
             groups.put(group.getGroupname(), group);
@@ -289,6 +295,12 @@ public class MemoryUserDatabase implemen
      */
     public Role createRole(String rolename, String description) {
 
+        if (rolename == null || rolename.length() == 0) {
+            String msg = sm.getString("memoryUserDatabase.nullRole");
+            log.warn(msg);
+            throw new IllegalArgumentException(msg);
+        }
+
         MemoryRole role = new MemoryRole(this, rolename, description);
         synchronized (roles) {
             roles.put(role.getRolename(), role);
@@ -308,12 +320,17 @@ public class MemoryUserDatabase implemen
     public User createUser(String username, String password,
                            String fullName) {
 
+        if (username == null || username.length() == 0) {
+            String msg = sm.getString("memoryUserDatabase.nullUser");
+            log.warn(msg);
+            throw new IllegalArgumentException(msg);
+        }
+
         MemoryUser user = new MemoryUser(this, username, password, fullName);
         synchronized (users) {
             users.put(user.getUsername(), user);
         }
         return (user);
-
     }
 
 
@@ -399,13 +416,13 @@ public class MemoryUserDatabase implemen
                 }
                 digester.addFactoryCreate
                     ("tomcat-users/group",
-                     new MemoryGroupCreationFactory(this));
+                     new MemoryGroupCreationFactory(this), true);
                 digester.addFactoryCreate
                     ("tomcat-users/role",
-                     new MemoryRoleCreationFactory(this));
+                     new MemoryRoleCreationFactory(this), true);
                 digester.addFactoryCreate
                     ("tomcat-users/user",
-                     new MemoryUserCreationFactory(this));
+                     new MemoryUserCreationFactory(this), true);
 
                 // Parse the XML input file to load this database
                 try {

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1058689&r1=1058688&r2=1058689&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Jan 13 17:55:55 2011
@@ -49,6 +49,11 @@
         <code>stderr</code> internally so users retain the option to treat the
         separately. (markt)
       </fix>
+      <add>
+        <bug>18797</bug>: Provide protection against <code>null</code> or zero
+        length names being provided for users, roles and groups in the
+        <code>MemoryRealm</code> and <code>UserDatabaseRealm</code>. (markt)
+      </add>
       <update>
         Improve fix for <bug>50205</bug> to trigger an error earlier if invalid
         configuration is used. (markt)



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to