Author: markt
Date: Tue Sep  9 09:09:17 2014
New Revision: 1623723

URL: http://svn.apache.org/r1623723
Log:
Deprecate md5Helper and switch to using ConcurrentMessageDigest
Reviewing the code, this also fixes a rare threading issue.

Modified:
    tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java?rev=1623723&r1=1623722&r2=1623723&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java Tue Sep  9 
09:09:17 2014
@@ -55,6 +55,7 @@ import org.apache.tomcat.util.codec.bina
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.apache.tomcat.util.res.StringManager;
+import org.apache.tomcat.util.security.ConcurrentMessageDigest;
 import org.apache.tomcat.util.security.MD5Encoder;
 import org.ietf.jgss.GSSContext;
 import org.ietf.jgss.GSSCredential;
@@ -109,7 +110,10 @@ public abstract class RealmBase extends 
 
     /**
      * MD5 message digest provider.
+     *
+     * @deprecated Unused. Will be removed in Tomcat 9.0.x onwards.
      */
+    @Deprecated
     protected static volatile MessageDigest md5Helper;
 
 
@@ -390,11 +394,7 @@ public abstract class RealmBase extends 
             throw new IllegalArgumentException(uee.getMessage());
         }
 
-        String serverDigest = null;
-        // Bugzilla 32137
-        synchronized(md5Helper) {
-            serverDigest = MD5Encoder.encode(md5Helper.digest(valueBytes));
-        }
+        String serverDigest = 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(valueBytes));
 
         if (log.isDebugEnabled()) {
             log.debug("Digest : " + clientDigest + " Username:" + username
@@ -1211,15 +1211,6 @@ public abstract class RealmBase extends 
      * Return the digest associated with given principal's user name.
      */
     protected String getDigest(String username, String realmName) {
-        if (md5Helper == null) {
-            try {
-                md5Helper = MessageDigest.getInstance("MD5");
-            } catch (NoSuchAlgorithmException e) {
-                log.error("Couldn't get MD5 digest: ", e);
-                throw new IllegalStateException(e.getMessage());
-            }
-        }
-
         if (hasMessageDigest()) {
             // Use pre-generated digest
             return getPassword(username);
@@ -1236,13 +1227,7 @@ public abstract class RealmBase extends 
             throw new IllegalArgumentException(uee.getMessage());
         }
 
-        byte[] digest;
-        // Bugzilla 32137
-        synchronized(md5Helper) {
-            digest = md5Helper.digest(valueBytes);
-        }
-
-        return MD5Encoder.encode(digest);
+        return 
MD5Encoder.encode(ConcurrentMessageDigest.digestMD5(valueBytes));
     }
 
 

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1623723&r1=1623722&r2=1623723&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Sep  9 09:09:17 2014
@@ -122,7 +122,12 @@
         is not running. (kfujino)
       </fix>
       <fix>
-        Fix threading issue when locking resources via WebDAV. (markt)
+        Fix a rare threading issue when locking resources via WebDAV.
+        (markt)
+      </fix>
+      <fix>
+        Fix a rare threading issue when using HTTP digest authentication.
+        (markt)
       </fix>
     </changelog>
   </subsection>



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

Reply via email to