Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 83865 invoked from network); 1 Feb 2006 12:40:54 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 1 Feb 2006 12:40:54 -0000 Received: (qmail 3603 invoked by uid 500); 1 Feb 2006 12:40:48 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 3543 invoked by uid 500); 1 Feb 2006 12:40:47 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 3531 invoked by uid 99); 1 Feb 2006 12:40:47 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [192.87.106.226] (HELO ajax.apache.org) (192.87.106.226) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Feb 2006 04:40:44 -0800 Received: from ajax.apache.org (ajax.apache.org [127.0.0.1]) by ajax.apache.org (Postfix) with ESMTP id 63F42E0 for ; Wed, 1 Feb 2006 13:40:23 +0100 (CET) Message-ID: <1812393228.1138797623407.JavaMail.jira@ajax.apache.org> Date: Wed, 1 Feb 2006 13:40:23 +0100 (CET) From: "Svetlana Samoilenko (JIRA)" To: harmony-dev@incubator.apache.org Subject: [jira] Created: (HARMONY-67) java.nio.charset.Charset.decode(ByteBuffer) throws unexpected BufferOverflowException for UTF-16BE, UTF-16LE, UTF-16 charsets. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N java.nio.charset.Charset.decode(ByteBuffer) throws unexpected BufferOverflowException for UTF-16BE, UTF-16LE, UTF-16 charsets. ------------------------------------------------------------------------------------------------------------------------------- Key: HARMONY-67 URL: http://issues.apache.org/jira/browse/HARMONY-67 Project: Harmony Type: Bug Components: Classlib Reporter: Svetlana Samoilenko According to j2se 1.4.2 specification for Charset.decode(ByteBuffer b) the method must not throw any exceptions. The test listed below shows that there is unexpected BufferOverflowException thrown if charset name is one in the following: UTF-16BE, UTF-16LE, UTF-16. BEA does not throw any exceptions. Code to reproduce: import java.nio.charset.Charset; import java.nio.ByteBuffer; import java.nio.CharBuffer; public class test2 { public static void main(String[] args) throws Exception { byte[] b = new byte[] {(byte)1}; ByteBuffer buf= ByteBuffer.wrap(b); CharBuffer charbuf=Charset.forName("UTF-16").decode(buf); System.out.println("CharBuffer.length()="+ charbuf.length()); } } Steps to Reproduce: 1. Build Harmony (check-out on 2006-01-30) j2se subset as described in README.txt. 2. Compile test2.java using BEA 1.4 javac > javac -d . test2.java 3. Run java using compatible VM (J9) > java -showversion test2 Output: C:\tmp>C:\jrockit-j2sdk1.4.2_04\bin\java.exe -showversion test2 java version "1.4.2_04" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) BEA WebLogic JRockit(TM) 1.4.2_04 JVM (build ari-31788-20040616-1132-win-ia32, Native Threads, GC strategy: parallel) CharBuffer.length()=0 C:\tmp>C:\harmony\trunk\deploy\jre\bin\java -showversion test2 (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable. java.nio.BufferOverflowException at java.nio.CharBuffer.put(CharBuffer.java:662) at java.nio.CharBuffer.put(CharBuffer.java:629) at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:406) at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:243) at java.nio.charset.Charset.decode(Charset.java:630) at test2.main(test2.java:8) Suggested junit test case: ------------------------ CharsetTest.java ------------------------------------------------- import java.nio.charset.Charset; import java.nio.ByteBuffer; import java.nio.CharBuffer; import junit.framework.*; public class CharsetTest extends TestCase { public static void main(String[] args) { junit.textui.TestRunner.run(CharsetTest.class); } public void test_decode() { byte[] b = new byte[] {(byte)1}; ByteBuffer buf= ByteBuffer.wrap(b); CharBuffer charbuf=Charset.forName("UTF-16").decode(buf); assertEquals("Assert 0: charset UTF-16",0,charbuf.length()); charbuf=Charset.forName("UTF-16BE").decode(buf); assertEquals("Assert 1: charset UTF-16BE",0, charbuf.length()); charbuf=Charset.forName("UTF-16LE").decode(buf); assertEquals("Assert 2: charset UTF16LE",0, charbuf.length()); } } -- 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