java.util.jar.Attributes.Name(String name) does not throw IllegalArgumentException if name.length > 70 ------------------------------------------------------------------------------------------------------
Key: HARMONY-85 URL: http://issues.apache.org/jira/browse/HARMONY-85 Project: Harmony Type: Bug Components: Classlib Reporter: Svetlana Samoilenko According to j2se 1.4.2 and 1.5 specification for Attributes.Name(String name) a string length cannot exceed 70 characters. Harmony does not throw IllegalArgumentException if name.length > 70. Code to reproduce: import java.util.jar.*; public class test2 { public static void main(String args[]) throws Exception { try { //no more than 70 chars in attribute name allowed new Attributes.Name( "01234567890123456789012345678901234567890123456789012345678901234567890"); System.out.println("Failed. Should be IllegalArgumentException "); } catch(IllegalArgumentException e) { System.out.println("Expected IllegalArgumentException"); } } } 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) Expected IllegalArgumentException C:\tmp>C:\harmony\trunk\deploy\jre\bin\java -showversion test2 (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as applicable. Failed. Should be IllegalArgumentException Siggested fix: @@ -84,7 +84,7 @@ public Name(String s) { int i = s.length(); - if (i == 0) + if (i == 0 || i> 70) throw new IllegalArgumentException(); for (; --i >= 0;) { char ch = s.charAt(i); Suggested junit test case: ------------------------ AttributesTest.java ------------------------------------------------- import java.util.jar.*; import junit.framework.*; public class AttributesTest extends TestCase { public static void main(String[] args) { junit.textui.TestRunner.run(AttributesTest.class); } public void test_constructor () { try { new Attributes.Name( "01234567890123456789012345678901234567890123456789012345678901234567890"); fail("Should be IllegalArgumentException"); } catch(IllegalArgumentException e) { //expected } } } -- 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