summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2017-09-20 16:09:16 -0600
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-11-09 19:09:35 +0000
commit43c346847756584bb58247510cb1b3249985fc27 (patch)
tree86a97b77712f63c4bf719371bc6509e8c6b0c1e3
parent1a85090a85c22ecabdeede559258e48b7abefa74 (diff)
downloadbase-43c346847756584bb58247510cb1b3249985fc27.tar.gz
Only construct real Throwable objects.
Without this test, someone could trick us into constructing other shady classes. Test: builds, boots Bug: 65281159 Change-Id: If678d0681708d1b0dcf056aa1133830ad3dbce31 (cherry picked from commit 8e151bf8999345399208d54663f103921ae5e1c6)
-rw-r--r--core/java/android/os/ParcelableException.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/core/java/android/os/ParcelableException.java b/core/java/android/os/ParcelableException.java
index d84d62997d93..7f71905d7f28 100644
--- a/core/java/android/os/ParcelableException.java
+++ b/core/java/android/os/ParcelableException.java
@@ -52,10 +52,12 @@ public final class ParcelableException extends RuntimeException implements Parce
final String msg = in.readString();
try {
final Class<?> clazz = Class.forName(name, true, Parcelable.class.getClassLoader());
- return (Throwable) clazz.getConstructor(String.class).newInstance(msg);
+ if (Throwable.class.isAssignableFrom(clazz)) {
+ return (Throwable) clazz.getConstructor(String.class).newInstance(msg);
+ }
} catch (ReflectiveOperationException e) {
- throw new RuntimeException(name + ": " + msg);
}
+ return new RuntimeException(name + ": " + msg);
}
/** {@hide} */