Fixes for 068-classloader

Check access to super class during linkage.
Don't allow findLoadedClasses to return erroneous classes.
068-classloader still needs a fix to validate method signatues before it will
run successfully.

Change-Id: I9c3cfcfc1357c94300fddad7d16de3cd670e2f80
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 1c9f064..17f80d4 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -2326,6 +2326,14 @@
       DCHECK(Thread::Current()->IsExceptionPending());
       return false;
     }
+    // Verify
+    if (!klass->CanAccess(super_class)) {
+      Thread::Current()->ThrowNewExceptionF("Ljava/lang/IllegalAccessError;",
+          "Class %s extended by class %s is inaccessible",
+          PrettyDescriptor(super_class).c_str(),
+          PrettyDescriptor(klass.get()).c_str());
+      return false;
+    }
     klass->SetSuperClass(super_class);
   }
   const DexFile::TypeList* interfaces = dex_file.GetInterfacesList(*class_def);