You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2007/02/12 11:53:21 UTC

svn commit: r506411 - in /harmony/enhanced/classlib/trunk/modules/security/src: main/java/common/java/security/Provider.java test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java

Author: smishura
Date: Mon Feb 12 02:53:21 2007
New Revision: 506411

URL: http://svn.apache.org/viewvc?view=rev&rev=506411
Log:
Fix and regression test for HARMONY-2761
[classlib][security] Security.getProviders throws NumberFormatException unexpectedly

Modified:
    harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/Provider.java
    harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java

Modified: harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/Provider.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/Provider.java?view=diff&rev=506411&r1=506410&r2=506411
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/Provider.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/Provider.java Mon Feb 12 02:53:21 2007
@@ -311,8 +311,14 @@
     // specified attribute name/value pair.
     private boolean checkAttribute(String servAlg, String attribute, String val) {
         if (attribute.equalsIgnoreCase("KeySize")) { //$NON-NLS-1$
-            if (Integer.valueOf(getProperty(servAlg + " KeySize")).compareTo( //$NON-NLS-1$
-                    Integer.valueOf(val)) < 0) {
+
+            String attributeValue = getProperty(servAlg + " KeySize"); //$NON-NLS-1$
+            if (attributeValue == null) {
+                // provider doesn't provide KeySize attribute for the service
+                return false;
+            }
+
+            if (Integer.valueOf(attributeValue).compareTo(Integer.valueOf(val)) < 0) {
                 return false;
             } else {
                 return true;

Modified: harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java?view=diff&rev=506411&r1=506410&r2=506411
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecurityTest.java Mon Feb 12 02:53:21 2007
@@ -221,6 +221,10 @@
 
             filter = "MyService.MyAlgorithm KeySize:1025";
             assertNull(filter, Security.getProviders(filter));
+            
+            // Regression for HARMONY-2761
+            filter = "MyService.MyAlgorithmNoKeySize KeySize:512";
+            assertNull(filter, Security.getProviders(filter));
         } finally { //clean up
             Security.removeProvider(p.getName());
         }
@@ -270,6 +274,11 @@
             m.put("MessageDigest.SHA-1", "");
             assertNull("MyService.MyAlgorithm KeySize:1025", Security
                     .getProviders(m));
+            
+            // Regression for HARMONY-2761
+            m.clear();
+            m.put("MyService.MyAlgorithmNoKeySize KeySize", "512");
+            assertNull("No KeySize attribute", Security.getProviders(m));
         } finally { //clean up
             Security.removeProvider(p.getName());
         }
@@ -312,12 +321,16 @@
                 .getProperty("My Test Property"));
     }
     
+    @SuppressWarnings("serial")
     class MyProvider extends Provider {
         MyProvider() {
             super("MyProvider", 1.0, "Provider for testing");
             put("MessageDigest.SHA-1", "SomeClassName");
             put("MyService.MyAlgorithm", "SomeClassName");
             put("MyService.MyAlgorithm KeySize", "1024");
+
+            // service has no KeySize attribute
+            put("MyService.MyAlgorithmNoKeySize", "SomeClassName");
         }
     }