ART: Interfaces must declare superclass j.l.Object.
Test: 166-bad-interface-super
Bug: 69442553
Change-Id: I13b11fb4831f3a2780e6d621676c807907587346
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 38dd761..ccf4319 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -5523,6 +5523,10 @@
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",