You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vera Volynets (JIRA)" <ji...@apache.org> on 2007/03/02 12:30:50 UTC

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

     [ https://issues.apache.org/jira/browse/HARMONY-1172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vera Volynets updated HARMONY-1172:
-----------------------------------

    Attachment: NoClassDefFoundError_20070302.patch

> [classlib][security] compatibility: SecureClassLoader.defineClass(...) throws NPE on Harmony and NoClassDefFoundError on RI.
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1172
>                 URL: https://issues.apache.org/jira/browse/HARMONY-1172
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Vladimir Ivanov
>         Assigned To: Alexey Varlamov
>         Attachments: NoClassDefFoundError_20070302.patch
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.