harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Boris Kuznetsov (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-1139) [classlib][crypto] compatibility: CipherOutputStream().close() throws the IllegalStateException on RI and the NPE on Harmony
Date Thu, 07 Sep 2006 07:55:24 GMT
    [ http://issues.apache.org/jira/browse/HARMONY-1139?page=comments#action_12433054 ] 
            
Boris Kuznetsov commented on HARMONY-1139:
------------------------------------------

The last patch is incorrect.

According CipherOutputStream.flush() spec.:
"Any bytes buffered by the encapsulated cipher and waiting to be processed by it will not
be written out. For example, if the encapsulated cipher is a block cipher, and the total number
of bytes written using one of the write methods is less than the cipher's block size, no bytes
will be written out."

So, proposed implementation of flush() - using cipher.doFinal() - is against the spec.

> [classlib][crypto] compatibility: CipherOutputStream().close() throws the IllegalStateException
on RI and the NPE on Harmony
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1139
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1139
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Vladimir Ivanov
>         Assigned To: Mikhail Loenko
>            Priority: Minor
>         Attachments: CipherOutputStream.patch, CipherOutputStreamTest.patch, HARMONY-1139.diff
>
>
> The method CipherOutputStream().close()  throws NPE on Harmony and IllegalStateException
on RI if stream is 'null'.
> ======================= test.java ======================
> import javax.crypto.*;
> import java.io.*;
> public class test  { 
>     public static void main (String[] args) throws Exception {
>         testCipherOutputStream ch = new testCipherOutputStream((OutputStream) null);
>         new CipherOutputStream(ch, Cipher.getInstance("DES/CBC/PKCS5Padding")).close();
 
>    }
> }
> class testCipherOutputStream extends CipherOutputStream {
>      testCipherOutputStream( OutputStream s){
>          super(s);  
>      }
> }
> ====================================================
> Output:
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp . -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System
optimized over throughput (initial strategy singleparpar))
> java.lang.IllegalStateException: Cipher not initialized
>         at javax.crypto.Cipher.c()V(DashoA12275:???)
>         at javax.crypto.Cipher.doFinal()[B(DashoA12275:???)
>         at javax.crypto.CipherOutputStream.close()V(DashoA12275:???)
>         at test.main(test.java:7)
> C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . -showversion
test
> java version 1.5 (subset)
> (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> Exception in thread "main" java.lang.NullPointerException
>         at javax.crypto.CipherOutputStream.flush(CipherOutputStream.java:88)
>         at javax.crypto.CipherOutputStream.close(CipherOutputStream.java:16)
>         at test.main(test.java:7)

-- 
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

        

Mime
View raw message