Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 56560 invoked from network); 2 Mar 2007 11:43:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Mar 2007 11:43:12 -0000 Received: (qmail 12506 invoked by uid 500); 2 Mar 2007 11:43:21 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 12410 invoked by uid 500); 2 Mar 2007 11:43:20 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 12401 invoked by uid 99); 2 Mar 2007 11:43:20 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Mar 2007 03:43:20 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Mar 2007 03:43:11 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id EE81A7142F1 for ; Fri, 2 Mar 2007 03:42:50 -0800 (PST) Message-ID: <29795956.1172835770974.JavaMail.jira@brutus> Date: Fri, 2 Mar 2007 03:42:50 -0800 (PST) From: "Vera Volynets (JIRA)" To: commits@harmony.apache.org Subject: [jira] Updated: (HARMONY-1172) [classlib][security] compatibility: SecureClassLoader.defineClass(...) throws NPE on Harmony and NoClassDefFoundError on RI. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ 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.