Add access checks to Method and Field reflection.
Art side of this change. Has a corresponding libcore change.
Bug: 13620925
Change-Id: Ie67f802a2a400e8212b489b9a261b7028422d8ba
diff --git a/test/100-reflect2/expected.txt b/test/100-reflect2/expected.txt
index 3d87ebc..bed0689 100644
--- a/test/100-reflect2/expected.txt
+++ b/test/100-reflect2/expected.txt
@@ -22,10 +22,7 @@
30
62
14
-java.lang.IllegalArgumentException: Invalid primitive conversion from int to short
- at java.lang.reflect.Field.set(Native Method)
- at Main.testFieldReflection(Main.java:121)
- at Main.main(Main.java:269)
+got expected IllegalArgumentException
true (class java.lang.Boolean)
6 (class java.lang.Byte)
z (class java.lang.Character)
@@ -66,12 +63,6 @@
true 0 1 2.0 hello world 3.0 4 5 6
null (null)
[]
-java.lang.reflect.InvocationTargetException
- at java.lang.reflect.Method.invoke(Native Method)
- at Main.testMethodReflection(Main.java:210)
- at Main.main(Main.java:270)
-Caused by: java.lang.ArithmeticException: surprise!
- at Main.thrower(Main.java:218)
- ... 3 more
+got expected InvocationTargetException
(class java.lang.String)
yz (class java.lang.String)
diff --git a/test/100-reflect2/src/Main.java b/test/100-reflect2/src/Main.java
index 0404591..0cc1488 100644
--- a/test/100-reflect2/src/Main.java
+++ b/test/100-reflect2/src/Main.java
@@ -119,8 +119,9 @@
try {
f = Main.class.getDeclaredField("s");
f.set(null, Integer.valueOf(14));
+ System.out.println("************* should have thrown!");
} catch (IllegalArgumentException expected) {
- expected.printStackTrace();
+ System.out.println("got expected IllegalArgumentException");
}
f = Main.class.getDeclaredField("z");
@@ -209,8 +210,8 @@
System.out.println(Arrays.toString(m.getParameterTypes()));
show(m.invoke(null));
System.out.println("************* should have thrown!");
- } catch (Exception expected) {
- expected.printStackTrace();
+ } catch (InvocationTargetException expected) {
+ System.out.println("got expected InvocationTargetException");
}
}