summaryrefslogtreecommitdiff
path: root/runtime/class_linker.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r--runtime/class_linker.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 38dd7612f2..ccf431969a 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -5523,6 +5523,10 @@ bool ClassLinker::LinkSuperClass(Handle<mirror::Class> klass) {
return false;
}
// Verify
+ if (klass->IsInterface() && super != GetClassRoot(kJavaLangObject)) {
+ ThrowClassFormatError(klass.Get(), "Interfaces must have java.lang.Object as superclass");
+ return false;
+ }
if (super->IsFinal()) {
ThrowVerifyError(klass.Get(),
"Superclass %s of %s is declared final",