summaryrefslogtreecommitdiff
path: root/core/jni/fd_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni/fd_utils.cpp')
-rw-r--r--core/jni/fd_utils.cpp22
1 files changed, 6 insertions, 16 deletions
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 68e01f6da99d..06a71cb22672 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -33,17 +33,6 @@
// Static whitelist of open paths that the zygote is allowed to keep open.
static const char* kPathWhitelist[] = {
- "/apex/com.android.appsearch/javalib/framework-appsearch.jar",
- "/apex/com.android.conscrypt/javalib/conscrypt.jar",
- "/apex/com.android.ipsec/javalib/ike.jar",
- "/apex/com.android.i18n/javalib/core-icu4j.jar",
- "/apex/com.android.media/javalib/updatable-media.jar",
- "/apex/com.android.mediaprovider/javalib/framework-mediaprovider.jar",
- "/apex/com.android.os.statsd/javalib/framework-statsd.jar",
- "/apex/com.android.permission/javalib/framework-permission.jar",
- "/apex/com.android.sdkext/javalib/framework-sdkextensions.jar",
- "/apex/com.android.wifi/javalib/framework-wifi.jar",
- "/apex/com.android.tethering/javalib/framework-tethering.jar",
"/dev/null",
"/dev/socket/zygote",
"/dev/socket/zygote_secondary",
@@ -103,11 +92,12 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
}
}
- // Jars from the ART APEX are allowed.
- static const char* kArtApexPrefix = "/apex/com.android.art/javalib/";
- if (android::base::StartsWith(path, kArtApexPrefix)
- && android::base::EndsWith(path, kJarSuffix)) {
- return true;
+ // Jars from APEXes are allowed. This matches /apex/**/javalib/*.jar.
+ static const char* kApexPrefix = "/apex/";
+ static const char* kApexJavalibPathSuffix = "/javalib";
+ if (android::base::StartsWith(path, kApexPrefix) && android::base::EndsWith(path, kJarSuffix) &&
+ android::base::EndsWith(android::base::Dirname(path), kApexJavalibPathSuffix)) {
+ return true;
}
// the in-memory file created by ART through memfd_create is allowed.