You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ml...@apache.org on 2006/10/12 13:27:23 UTC

svn commit: r463203 - in /incubator/harmony/enhanced/classlib/trunk/modules/security/src: main/java/common/java/security/KeyStore.java test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java

Author: mloenko
Date: Thu Oct 12 04:27:23 2006
New Revision: 463203

URL: http://svn.apache.org/viewvc?view=rev&rev=463203
Log:
applied patch from HARMONY-1539
[classlib][security] unexpected IllegalStateException for KeyStore.PasswordProtection(null).getPassword()

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/KeyStore.java
    incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/KeyStore.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/KeyStore.java?view=diff&rev=463203&r1=463202&r2=463203
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/KeyStore.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/KeyStore.java Thu Oct 12 04:27:23 2006
@@ -825,6 +825,8 @@
         // Store password
         private char[] password;
 
+        private boolean isDestroyed = false;
+
         /**
          * 
          *  
@@ -838,7 +840,7 @@
          *  
          */
         public synchronized char[] getPassword() {
-            if (password == null) {
+            if (isDestroyed) {
                 throw new IllegalStateException(Messages.getString("security.36")); //$NON-NLS-1$
             }
             return password;
@@ -849,8 +851,11 @@
          *  
          */
         public synchronized void destroy() throws DestroyFailedException {
-            Arrays.fill(password, '\u0000');
-            password = null;
+            isDestroyed = true;
+            if (password != null) {
+                Arrays.fill(password, '\u0000');
+                password = null;
+            }
         }
 
         /**
@@ -858,7 +863,7 @@
          *  
          */
         public synchronized boolean isDestroyed() {
-            return (password == null);
+            return isDestroyed;
         }
     }
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java?view=diff&rev=463203&r1=463202&r2=463203
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/KeyStoreTest.java Thu Oct 12 04:27:23 2006
@@ -230,6 +230,15 @@
         }
     }
 
+    /**
+     * @test java.security.KeyStore.PasswordProtectionn.getPassword()
+     */
+    public void testKeyStorePPGetPassword() {
+        // Regression for HARMONY-1539
+        // no exception expected
+        assertNull(new KeyStore.PasswordProtection(null).getPassword());
+    }
+
 
     /*
      * @tests java.security.KeyStoreSpi.engineEntryInstanceOf(String, Class<? extends Entry>)