bad logic in jvm:guessWSHome() in old test harness affects j9 runs
------------------------------------------------------------------
Key: DERBY-2265
URL: https://issues.apache.org/jira/browse/DERBY-2265
Project: Derby
Issue Type: Bug
Affects Versions: 10.3.0.0
Environment: wctme5.7_foundation (j2ME 1.0) or weme6.1 (foundation,
j2ME 1.1)
Reporter: Myrna van Lunteren
Assigned To: Myrna van Lunteren
Priority: Minor
Running derbyall using either wcmte5.7_foundation or weme6.1 results in the
following stack trace.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException
at java.lang.String.substring(String.java:1043)
at
org.apache.derbyTesting.functionTests.harness.jvm.guessWSHome(jvm.java:301)
at
org.apache.derbyTesting.functionTests.harness.jvm.getSecurityProps(jvm.java:356)
at
org.apache.derbyTesting.functionTests.harness.jvm.setSecurityProps(jvm.java:336)
at
org.apache.derbyTesting.functionTests.harness.RunTest.buildTestCommand(RunTest.java:2350)
at
org.apache.derbyTesting.functionTests.harness.RunTest.testRun(RunTest.java:498)
at
org.apache.derbyTesting.functionTests.harness.RunTest.main(RunTest.java:368)
I think this code was not reached until various security related changes
recently, but the code is just bad.
I think this code was used at one point to attempt to kick off another jvm to
run a server with, but that is now defunct.
Rather than try to make the code work, or try to clean it up, I'd rather spend
time converting tests to the junit framework, so I will just fix this up so we
don't hit the error.
The bad code is:
wshome = jhome.substring(0,jhome.indexOf(sep + "jre"));
wshome = wshome.substring(0,wshome.lastIndexOf(sep));
If the jhome ( System.getProperty("java.home")) does not contain 'jre', we will
get -1 as the 2nd parameter in jhome.substring, and thus cause the
ArrayIndexOutOfBounds.
I propose to fix this piece of code as follows:
int havejre=jhome.indexOf(sep + "jre");
if (havejre > 0)
{
wshome = jhome.substring(0,jhome.indexOf(sep + "jre"));
wshome = wshome.substring(0,wshome.lastIndexOf(sep));
}
else
wshome = jhome.substring(0,jhome.lastIndexOf(sep));
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.