Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 454 invoked from network); 1 Feb 2007 16:15:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Feb 2007 16:15:03 -0000 Received: (qmail 73600 invoked by uid 500); 1 Feb 2007 16:15:07 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 73562 invoked by uid 500); 1 Feb 2007 16:15:07 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 73516 invoked by uid 99); 1 Feb 2007 16:15:07 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Feb 2007 08:15:07 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Feb 2007 08:15:00 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 561D11A981A; Thu, 1 Feb 2007 08:14:40 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Thu, 01 Feb 2007 16:14:40 -0000 To: commits@harmony.apache.org From: smishura@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070201161440.561D11A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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) { + } + } }