diff options
Diffstat (limited to 'core/jni/fd_utils.cpp')
-rw-r--r-- | core/jni/fd_utils.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp index c5904e0e9e5e..f56f7eca5f00 100644 --- a/core/jni/fd_utils.cpp +++ b/core/jni/fd_utils.cpp @@ -87,13 +87,17 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const { static const char* kOverlaySubdir = "/system/vendor/overlay-subdir/"; static const char* kSystemProductOverlayDir = "/system/product/overlay/"; static const char* kProductOverlayDir = "/product/overlay"; + static const char* kSystemProductServicesOverlayDir = "/system/product_services/overlay/"; + static const char* kProductServicesOverlayDir = "/product_services/overlay"; static const char* kApkSuffix = ".apk"; if ((android::base::StartsWith(path, kOverlayDir) || android::base::StartsWith(path, kOverlaySubdir) || android::base::StartsWith(path, kVendorOverlayDir) || android::base::StartsWith(path, kSystemProductOverlayDir) - || android::base::StartsWith(path, kProductOverlayDir)) + || android::base::StartsWith(path, kProductOverlayDir) + || android::base::StartsWith(path, kSystemProductServicesOverlayDir) + || android::base::StartsWith(path, kProductServicesOverlayDir)) && android::base::EndsWith(path, kApkSuffix) && path.find("/../") == std::string::npos) { return true; |