harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vera Volynets (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-1172) [classlib][security] compatibility: SecureClassLoader.defineClass(...) throws NPE on Harmony and NoClassDefFoundError on RI.
Date Fri, 02 Mar 2007 11:42:50 GMT

     [ 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

Vm throws java.lang.IndexOutOfBoundsException because the check that offset or len is outside
of the data array goes first. And there is no class name check.
RI checks class name earlier than out of bounds errors.
So I add check that class name should't hava "/" symbol before.

> [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, 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.


Mime
View raw message