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/01 17:14:40 UTC
svn commit: r502260 - in
/harmony/enhanced/classlib/trunk/modules/security/src:
main/java/common/java/security/MessageDigest.java
test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java
Author: smishura
Date: Thu Feb 1 08:14:39 2007
New Revision: 502260
URL: http://svn.apache.org/viewvc?view=rev&rev=502260
Log:
Apply modified patch for HARMONY-1148:
[classlib][security] compatibility: method MessageDigest.digest(..) throws different exception on RI and Harmony
Modified:
harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/MessageDigest.java
harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java
Modified: harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/MessageDigest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/MessageDigest.java?view=diff&rev=502260&r1=502259&r2=502260
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/MessageDigest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/MessageDigest.java Thu Feb 1 08:14:39 2007
@@ -203,9 +203,13 @@
*
*/
public int digest(byte[] buf, int offset, int len) throws DigestException {
- if (buf == null || offset < 0 || len < 0 ||
- (long)offset + (long)len > buf.length) {
- throw new IllegalArgumentException(Messages.getString("security.05")); //$NON-NLS-1$
+ if (buf == null ||
+ // offset < 0 || len < 0 ||
+ // checks for negative values are commented out intentionally
+ // see HARMONY-1148 for details
+ (long) offset + (long) len > buf.length) {
+ throw new IllegalArgumentException(Messages
+ .getString("security.05")); //$NON-NLS-1$
}
return engineDigest(buf, offset, len);
}
Modified: harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java?view=diff&rev=502260&r1=502259&r2=502260
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/MessageDigest1Test.java Thu Feb 1 08:14:39 2007
@@ -130,6 +130,48 @@
}
}
+ /**
+ * @tests java.security.MessageDigest#digest(byte[], int, int)
+ */
+ public void test_digestLB$LILI() throws Exception {
+
+ // Regression for Harmony-1148
+ MessageDigest md = new MyMessageDigest1();
+ final byte[] bytes = new byte[] { 2, 4, 1 };
+ try {
+ // buf == null
+ md.digest(null, 0, 1);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ // offset + len > buf.length
+ md.digest(bytes, 0, bytes.length + 1);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ // offset + len > Integer.MAX_VALUE
+ md.digest(bytes, Integer.MAX_VALUE, 1);
+ fail("No expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ }
+ // offset<0 and len<0 are passed to provider
+ final int offset = -1;
+ final int len = -1;
+ final int status = 33;
+ md = new MyMessageDigest1("ABC") {
+ @Override
+ public int engineDigest(byte[] arg0, int arg1, int arg2) {
+ assertSame("buf", bytes, arg0);
+ assertEquals("offset", offset, arg1);
+ assertEquals("len", len, arg2);
+ return status;
+ }
+ };
+ assertEquals("returned status", status, md.digest(bytes, offset, len));
+ }
+
public void testIsEqual() {
byte[] b1 = {1, 2, 3, 4};
byte[] b2 = {1, 2, 3, 4, 5};
@@ -181,6 +223,22 @@
}
// No exception for len < 0
md.update(bytes, 1, -1);
+
+ //Regression for Harmony-1148
+ md = MessageDigest.getInstance("SHA");
+ try {
+ // offset < 0
+ md.digest(bytes, 0, -1);
+ fail("No expected DigestException");
+ } catch (DigestException e) {
+ }
+ try {
+ // len < 0
+ md.digest(bytes, -1, 0);
+ fail("No expected DigestException");
+ } catch (DigestException e) {
+ }
+
}
}