You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vladimir Ivanov (JIRA)" <ji...@apache.org> on 2006/08/14 13:46:14 UTC

[jira] Created: (HARMONY-1172) [classlib][security] compatibility: SecureClassLoader.defineClass(...) throws NPE on Harmony and NoClassDefFoundError on RI.

[classlib][security] compatibility: SecureClassLoader.defineClass(...) throws NPE on Harmony and NoClassDefFoundError on RI.
----------------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-1172
                 URL: http://issues.apache.org/jira/browse/HARMONY-1172
             Project: Harmony
          Issue Type: Bug
            Reporter: Vladimir Ivanov


The method SecureClassLoader.defineClass(...) throws NPE for class name with "/" while Harmony+j9 throws NPE and Harmony+drlvm throws IndexOutOfBoundsException.
For name without "/"  RI and Harmony throws NPE, so it may be 'non-bug diff'.

============= test.java =================
import java.security.*;
import java.net.*;
import java.nio.*;

public class test  {
    public static void main (String[] args) throws Exception {
       testSecureClassLoader cl = new testSecureClassLoader(new testSecureClassLoader());
       URL url = new URL("file://C:/test.jar");
       try {
           cl.testdefineClass("/k", new byte[] {}, 126, 0, new CodeSource(url, new CodeSigner[820]));
       } catch (Throwable e) {
           System.out.println("name = '/k', res = " + e);
       }
       try {
           cl.testdefineClass("k", new byte[] {}, 126, 0, new CodeSource(url, new CodeSigner[820]));
       } catch (Throwable e) {
           System.out.println("name = 'k', res = " + e);
       }
    }
}
class testSecureClassLoader extends SecureClassLoader {

    testSecureClassLoader(){ super(); }
    testSecureClassLoader(testSecureClassLoader cl){ super(cl); }

    public Class testdefineClass (String name, byte[] array, int off, int len, CodeSource cs)  {
        return super.defineClass(name, array, off, len, cs);
    }
    public Class testdefineClass (String name, ByteBuffer array, CodeSource cs)  {
        return super.defineClass(name, array, cs);
    }
}
=====================================

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

name = '/k', res = java.lang.NoClassDefFoundError: IllegalName: /k
name = 'k', res = java.lang.NullPointerException

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.
name = '/k', res = java.lang.NullPointerException
name = 'k', res = java.lang.NullPointerException

C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java -Dvm.assert_dialog=false -cp . -showversion test
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r431304, (Aug 14 2006), Windows/ia32/msvc 1310, debug build
http://incubator.apache.org/harmony
name = '/k', res = java.lang.IndexOutOfBoundsException: Check your arguments
name = 'k', res = java.lang.NullPointerException


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