diff --git a/Ext4Crypt.cpp b/Ext4Crypt.cpp index a785856..6612eaf 100644 --- a/Ext4Crypt.cpp +++ b/Ext4Crypt.cpp @@ -601,11 +601,15 @@ bool e4crypt_prepare_user_storage(const char* volume_uuid, userid_t user_id, auto misc_de_path = android::vold::BuildDataMiscDePath(user_id); auto user_de_path = android::vold::BuildDataUserDePath(volume_uuid, user_id); auto profiles_de_path = android::vold::BuildDataProfilesDePath(user_id); + auto foreign_dex_profiles_de_path = + android::vold::BuildDataProfilesForeignDexDePath(user_id); + if (!prepare_dir(system_de_path, 0770, AID_SYSTEM, AID_SYSTEM)) return false; if (!prepare_dir(misc_de_path, 01771, AID_SYSTEM, AID_MISC)) return false; if (!prepare_dir(user_de_path, 0771, AID_SYSTEM, AID_SYSTEM)) return false; if (!prepare_dir(profiles_de_path, 0771, AID_SYSTEM, AID_SYSTEM)) return false; + if (!prepare_dir(foreign_dex_profiles_de_path, 0773, AID_SYSTEM, AID_SYSTEM)) return false; if (e4crypt_is_native()) { std::string de_raw_ref; diff --git a/Utils.cpp b/Utils.cpp index 2514f9a..942945d 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -581,6 +581,11 @@ std::string BuildDataProfilesDePath(userid_t userId) { return StringPrintf("%s/misc/profiles/cur/%u", BuildDataPath(nullptr).c_str(), userId); } +std::string BuildDataProfilesForeignDexDePath(userid_t userId) { + std::string profiles_path = BuildDataProfilesDePath(userId); + return StringPrintf("%s/foreign-dex", profiles_path.c_str()); +} + std::string BuildDataPath(const char* volumeUuid) { // TODO: unify with installd path generation logic if (volumeUuid == nullptr) { diff --git a/Utils.h b/Utils.h index 0248b85..cfc8050 100644 --- a/Utils.h +++ b/Utils.h @@ -101,6 +101,7 @@ std::string BuildDataSystemDePath(userid_t userid); std::string BuildDataMiscCePath(userid_t userid); std::string BuildDataMiscDePath(userid_t userid); std::string BuildDataProfilesDePath(userid_t userid); +std::string BuildDataProfilesForeignDexDePath(userid_t userid); std::string BuildDataPath(const char* volumeUuid); std::string BuildDataMediaPath(const char* volumeUuid, userid_t userid);