RI java.security.MessageDigest.update() doesn't check input parameters
if they are negative, but Harmony does and throw IAE for next code

MessageDigest.getInstance("SHA").update(new byte[] {2,2}, 0, -100);
MessageDigest.getInstance("SHA").update(new byte[] {2,2},  -100, 57);

Spec doesn't mention anything about any exceptions. I filed this issue
as non-bug difference.

Does anybody have objections?

2006/8/9, Denis Kishenko (JIRA) <[EMAIL PROTECTED]>:
[class][security] MessageDigest.update(byte[], int, int) incompatible with RI 
exceptions
----------------------------------------------------------------------------------------

                Key: HARMONY-1120
                URL: http://issues.apache.org/jira/browse/HARMONY-1120
            Project: Harmony
         Issue Type: Bug
         Components: Non-bug differences from RI
           Reporter: Denis Kishenko


Seems like RI doesn't check if offset and len are negative but Harmony does, so 
we have difference in behavior.

------------------------------------ Test 
-------------------------------------------

import java.security.MessageDigest;

public class bug9429 {

   public static void main (String[] args) {
       // len <0; RI does not throw exception
       try {
           System.err.println("1");
           MessageDigest.getInstance("SHA").update(new byte[] {2,2}, 0, -100);
       } catch (Exception e) {
           e.printStackTrace();
       }
       // RI and Harmony throws IllegalArgumentException
       try {
           System.err.println("2");
           MessageDigest.getInstance("SHA").update(new byte[] {2,2}, 0, 5);
       } catch (Exception e) {
           e.printStackTrace();
       }
       // RI throws ArrayIndexOutOfBoundsException; Harmony throws 
IllegalArgumentException
       // off <0
       try {
           System.err.println("3");
           MessageDigest.getInstance("SHA").update(new byte[] {2,2},  -100, 57);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

------------------------ Output ----------------------------------------

RI
1
2
java.lang.IllegalArgumentException: Input buffer too short
                       at 
java.security.MessageDigest.update(MessageDigest.java:267)
                       at bug9429.main(bug9429.java:16)
3
java.lang.ArrayIndexOutOfBoundsException
                       at 
java.lang.System.arraycopy(Ljava.lang.Object;ILjava.lang.Object;II)V(Unknown 
Source)
                       at 
sun.security.provider.DigestBase.engineUpdate(DigestBase.java:120)
                       at 
java.security.MessageDigest$Delegate.engineUpdate(MessageDigest.java:523)
                       at 
java.security.MessageDigest.update(MessageDigest.java:269)
                       at bug9429.main(bug9429.java:24)

Harmony
1
java.lang.IllegalArgumentException: Incorrect offset/len parameters
                       at 
java.security.MessageDigest.update(MessageDigest.java:169)
                       at bug9429.main(bug9429.java:9)
2
java.lang.IllegalArgumentException: Incorrect offset/len parameters
                       at 
java.security.MessageDigest.update(MessageDigest.java:169)
                       at bug9429.main(bug9429.java:16)
3
java.lang.IllegalArgumentException: Incorrect offset/len parameters
                       at 
java.security.MessageDigest.update(MessageDigest.java:169)
                       at bug9429.main(bug9429.java:24)


--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira





--
Denis M. Kishenko
Intel Middleware Products Division

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to