summaryrefslogtreecommitdiff
path: root/runtime/native/dalvik_system_DexFile.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/native/dalvik_system_DexFile.cc')
-rw-r--r--runtime/native/dalvik_system_DexFile.cc42
1 files changed, 20 insertions, 22 deletions
diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc
index d7636540fc..960a1f7375 100644
--- a/runtime/native/dalvik_system_DexFile.cc
+++ b/runtime/native/dalvik_system_DexFile.cc
@@ -319,31 +319,29 @@ static jobject DexFile_openDexFileNative(JNIEnv* env,
return nullptr;
}
-#ifdef __ANDROID__
- const int uid = getuid();
- // The following UIDs are exempted:
- // * Root (0): root processes always have write access to files.
- // * System (1000): /data/app/**.apk are owned by AID_SYSTEM;
- // loading installed APKs in system_server is allowed.
- // * Shell (2000): directly calling dalvikvm/app_process in ADB shell
- // to run JARs with CLI is allowed.
- if (uid != 0 && uid != 1000 && uid != 2000) {
- Runtime* const runtime = Runtime::Current();
- CompatFramework& compatFramework = runtime->GetCompatFramework();
- if (compatFramework.IsChangeEnabled(kEnforceReadOnlyJavaDcl)) {
- if (access(sourceName.c_str(), W_OK) == 0) {
- LOG(ERROR) << "Attempt to load writable dex file: " << sourceName.c_str();
- ScopedLocalRef<jclass> se(env, env->FindClass("java/lang/SecurityException"));
- std::string message(
- StringPrintf("Writable dex file '%s' is not allowed.", sourceName.c_str()));
- env->ThrowNew(se.get(), message.c_str());
- return nullptr;
+ if (kIsTargetAndroid) {
+ const int uid = getuid();
+ // The following UIDs are exempted:
+ // * Root (0): root processes always have write access to files.
+ // * System (1000): /data/app/**.apk are owned by AID_SYSTEM;
+ // loading installed APKs in system_server is allowed.
+ // * Shell (2000): directly calling dalvikvm/app_process in ADB shell
+ // to run JARs with CLI is allowed.
+ if (uid != 0 && uid != 1000 && uid != 2000) {
+ Runtime* const runtime = Runtime::Current();
+ CompatFramework& compatFramework = runtime->GetCompatFramework();
+ if (compatFramework.IsChangeEnabled(kEnforceReadOnlyJavaDcl)) {
+ if (access(sourceName.c_str(), W_OK) == 0) {
+ LOG(ERROR) << "Attempt to load writable dex file: " << sourceName.c_str();
+ ScopedLocalRef<jclass> se(env, env->FindClass("java/lang/SecurityException"));
+ std::string message(
+ StringPrintf("Writable dex file '%s' is not allowed.", sourceName.c_str()));
+ env->ThrowNew(se.get(), message.c_str());
+ return nullptr;
+ }
}
}
}
-#else
- (void) kEnforceReadOnlyJavaDcl;
-#endif
std::vector<std::string> error_msgs;
const OatFile* oat_file = nullptr;