Selaa lähdekoodia

Fix for Bugzilla Bug 74238: Applet which uses cflow pointcut gets AccessControlException

tags/V1_2_1
aclement 19 vuotta sitten
vanhempi
commit
6e155a6b9b

+ 38
- 0
ajde/testdata/SecurityManagerTest/build.xml Näytä tiedosto

@@ -0,0 +1,38 @@
<project name="SecurityManagerTest" default="all" basedir=".">

<property name="aspectj" value="j:\eclipse\aspectj_ws\aj-build\dist\tools\lib"/>
<property name="aspectjrt" value="${aspectj}/aspectjrt.jar" />
<property name="aspectjtools" value="${aspectj}/aspectjtools.jar" />

<taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
<classpath>
<pathelement path="${aspectjtools}"/>
</classpath>
</taskdef>

<target name="compile">
<iajc
srcdir="${basedir}/src"
classpath="${aspectjrt}"
destdir="${basedir}/bin"
verbose="true"

fork="true"
forkclasspath="${aspectjtools}"
>
</iajc>
</target>
<target name="run">
<java
classname="HelloWorld"
classpath="${basedir}/../../../runtime/bin;${basedir}/bin"
fork="yes"
>
<jvmarg value="-Djava.security.manager"/>
</java>
</target>
<target name="all" depends="compile, run"/>

</project>

+ 24
- 0
ajde/testdata/SecurityManagerTest/src/Aspect.aj Näytä tiedosto

@@ -0,0 +1,24 @@
/*
* Created on 28-Sep-2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author websterm
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public aspect Aspect {
pointcut method () :
execution(* println(..)) && within(HelloWorld) && cflow(execution(* main(..)));
before () : method () {
System.out.println(thisJoinPoint.getSignature());
}
}

+ 24
- 0
ajde/testdata/SecurityManagerTest/src/HelloWorld.java Näytä tiedosto

@@ -0,0 +1,24 @@
/*
* Created on 28-Sep-2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

/**
* @author websterm
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class HelloWorld {

public static void println () {
System.out.println("Hello World!");
}
public static void main(String[] args) {
println();
// System.getProperty("foo");
}
}

BIN
lib/test/aspectjrt.jar Näytä tiedosto


+ 11
- 1
runtime/src/org/aspectj/runtime/internal/CFlowCounter.java Näytä tiedosto

@@ -50,7 +50,7 @@ public class CFlowCounter {
private static ThreadStackFactory getThreadLocalStackFactoryFor11() { return new ThreadStackFactoryImpl11(); }
private static void selectFactoryForVMVersion() {
String override = System.getProperty("aspectj.runtime.cflowstack.usethreadlocal","unspecified");
String override = getSystemPropertyWithoutSecurityException("aspectj.runtime.cflowstack.usethreadlocal","unspecified");
boolean useThreadLocalImplementation = false;
if (override.equals("unspecified")) {
String v = System.getProperty("java.class.version","0.0");
@@ -67,6 +67,16 @@ public class CFlowCounter {
}
}
private static String getSystemPropertyWithoutSecurityException (String aPropertyName, String aDefaultValue) {
try {
return System.getProperty(aPropertyName, aDefaultValue);
}
catch (SecurityException ex) {
return aDefaultValue;
}
}
// For debug ...
public static String getThreadStackFactoryClassName() {
return tsFactory.getClass().getName();

+ 11
- 1
runtime/src/org/aspectj/runtime/internal/CFlowStack.java Näytä tiedosto

@@ -121,7 +121,7 @@ public class CFlowStack {
private static ThreadStackFactory getThreadLocalStackFactoryFor11() { return new ThreadStackFactoryImpl11(); }
private static void selectFactoryForVMVersion() {
String override = System.getProperty("aspectj.runtime.cflowstack.usethreadlocal","unspecified");
String override = getSystemPropertyWithoutSecurityException("aspectj.runtime.cflowstack.usethreadlocal","unspecified");
boolean useThreadLocalImplementation = false;
if (override.equals("unspecified")) {
String v = System.getProperty("java.class.version","0.0");
@@ -138,6 +138,16 @@ public class CFlowStack {
}
}
private static String getSystemPropertyWithoutSecurityException (String aPropertyName, String aDefaultValue) {
try {
return System.getProperty(aPropertyName, aDefaultValue);
}
catch (SecurityException ex) {
return aDefaultValue;
}
}

// For debug ...
public static String getThreadStackFactoryClassName() {
return tsFactory.getClass().getName();

Loading…
Peruuta
Tallenna