diff options
author | 2022-02-21 19:02:05 +0000 | |
---|---|---|
committer | 2022-03-03 11:22:21 +0000 | |
commit | 9c3e8f5622b4ee0177f03d14bbdad375792bd04d (patch) | |
tree | 607bf622960f4cca5cb827e79c37347ed1a830ee | |
parent | f4aae9ee08c2df54cff7820958552f6974ebd8b2 (diff) |
Rename SupplementalProcess to SdkSandbox
Ignore-AOSP-First: code is not in AOSP yet
Bug: 220320098
Test: presubmit
Change-Id: Ida831e19203181f9e59eb447f4d03fac683e1019
Merged-In: Ida831e19203181f9e59eb447f4d03fac683e1019
(cherry picked from commit 4ee18ae8d0c7eb38faad41167417137831036453)
-rw-r--r-- | cmds/installd/InstalldNativeService.cpp | 36 | ||||
-rw-r--r-- | cmds/installd/InstalldNativeService.h | 9 | ||||
-rw-r--r-- | cmds/installd/tests/installd_service_test.cpp | 40 | ||||
-rw-r--r-- | cmds/installd/tests/installd_utils_test.cpp | 52 | ||||
-rw-r--r-- | cmds/installd/utils.cpp | 28 | ||||
-rw-r--r-- | cmds/installd/utils.h | 10 |
6 files changed, 85 insertions, 90 deletions
diff --git a/cmds/installd/InstalldNativeService.cpp b/cmds/installd/InstalldNativeService.cpp index dd7c3d3524..b6ebfca2ed 100644 --- a/cmds/installd/InstalldNativeService.cpp +++ b/cmds/installd/InstalldNativeService.cpp @@ -723,10 +723,10 @@ binder::Status InstalldNativeService::createAppDataLocked( } // TODO(b/220095381): Due to boot time regression, we have omitted call to - // createAppDirectoryForSupplementalData from here temporarily (unless it's for testing) + // createSdkSandboxDataDirectory from here temporarily (unless it's for testing) if (uuid_ != nullptr && strcmp(uuid_, "TEST") == 0) { - auto status = createAppDirectoryForSupplementalData(uuid, packageName, userId, appId, - previousAppId, seInfo, flags); + auto status = createSdkSandboxDataDirectory(uuid, packageName, userId, appId, previousAppId, + seInfo, flags); if (!status.isOk()) { return status; } @@ -736,15 +736,15 @@ binder::Status InstalldNativeService::createAppDataLocked( } /** - * Responsible for creating /data/user/0/supplemental/<app-name> directory and other + * Responsible for creating /data/misc_{ce|de}/user/0/sdksandbox/<app-name> directory and other * app level sub directories, such as ./shared */ -binder::Status InstalldNativeService::createAppDirectoryForSupplementalData( +binder::Status InstalldNativeService::createSdkSandboxDataDirectory( const std::optional<std::string>& uuid, const std::string& packageName, int32_t userId, int32_t appId, int32_t previousAppId, const std::string& seInfo, int32_t flags) { - int32_t supplementalUid = multiuser_get_supplemental_uid(userId, appId); - if (supplementalUid == -1) { - // There no valid supplemental process for this app. Skip creation of data directory + int32_t sdkSandboxUid = multiuser_get_sdk_sandbox_uid(userId, appId); + if (sdkSandboxUid == -1) { + // There no valid sdk sandbox process for this app. Skip creation of data directory return ok(); } @@ -759,35 +759,35 @@ binder::Status InstalldNativeService::createAppDirectoryForSupplementalData( } bool isCeData = (currentFlag == FLAG_STORAGE_CE); - // /data/misc_{ce,de}/<user-id>/supplemental directory gets created by vold + // /data/misc_{ce,de}/<user-id>/sdksandbox directory gets created by vold // during user creation // Prepare the app directory - auto appPath = create_data_misc_supplemental_package_path(uuid_, isCeData, userId, - packageName.c_str()); + auto appPath = create_data_misc_sdk_sandbox_package_path(uuid_, isCeData, userId, + packageName.c_str()); if (prepare_app_dir(appPath, 0751, AID_SYSTEM)) { return error("Failed to prepare " + appPath); } // Now prepare the shared directory which will be accessible by all codes - auto sharedPath = create_data_misc_supplemental_shared_path(uuid_, isCeData, userId, - packageName.c_str()); + auto sharedPath = create_data_misc_sdk_sandbox_shared_path(uuid_, isCeData, userId, + packageName.c_str()); - int32_t previousSupplementalUid = multiuser_get_supplemental_uid(userId, previousAppId); + int32_t previousSdkSandboxUid = multiuser_get_sdk_sandbox_uid(userId, previousAppId); int32_t cacheGid = multiuser_get_cache_gid(userId, appId); if (cacheGid == -1) { return exception(binder::Status::EX_ILLEGAL_STATE, - StringPrintf("cacheGid cannot be -1 for supplemental data")); + StringPrintf("cacheGid cannot be -1 for sdksandbox data")); } - auto status = createAppDataDirs(sharedPath, supplementalUid, &previousSupplementalUid, - cacheGid, seInfo, 0700); + auto status = createAppDataDirs(sharedPath, sdkSandboxUid, &previousSdkSandboxUid, cacheGid, + seInfo, 0700); if (!status.isOk()) { return status; } // TODO(b/211763739): We also need to handle art profile creations - // TODO(b/211763739): And return the CE inode of the supplemental root directory and + // TODO(b/211763739): And return the CE inode of the sdksandbox root directory and // app directory under it so we can clear contents while CE storage is locked } diff --git a/cmds/installd/InstalldNativeService.h b/cmds/installd/InstalldNativeService.h index d4429793c0..b2bad1d386 100644 --- a/cmds/installd/InstalldNativeService.h +++ b/cmds/installd/InstalldNativeService.h @@ -204,11 +204,10 @@ private: const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return); - binder::Status createAppDirectoryForSupplementalData(const std::optional<std::string>& uuid, - const std::string& packageName, - int32_t userId, int32_t appId, - int32_t previousAppId, - const std::string& seInfo, int32_t flags); + binder::Status createSdkSandboxDataDirectory(const std::optional<std::string>& uuid, + const std::string& packageName, int32_t userId, + int32_t appId, int32_t previousAppId, + const std::string& seInfo, int32_t flags); }; } // namespace installd diff --git a/cmds/installd/tests/installd_service_test.cpp b/cmds/installd/tests/installd_service_test.cpp index 499ba70775..21ab5b87b1 100644 --- a/cmds/installd/tests/installd_service_test.cpp +++ b/cmds/installd/tests/installd_service_test.cpp @@ -81,7 +81,7 @@ static constexpr const int32_t kTestUserId = 0; static constexpr const uid_t kTestAppId = 19999; const gid_t kTestAppUid = multiuser_get_uid(kTestUserId, kTestAppId); -const uid_t kTestAppSupplementalUid = multiuser_get_supplemental_uid(kTestUserId, kTestAppId); +const uid_t kTestSdkSandboxUid = multiuser_get_sdk_sandbox_uid(kTestUserId, kTestAppId); #define FLAG_FORCE InstalldNativeService::FLAG_FORCE @@ -949,7 +949,7 @@ TEST_F(AppDataSnapshotTest, RestoreAppDataSnapshot_WrongVolumeUuid) { "com.foo", 10000, "", 0, 41, FLAG_STORAGE_DE)); } -class AppSupplementalDataTest : public testing::Test { +class SdkSandboxDataTest : public testing::Test { public: void CheckFileAccess(const std::string& path, uid_t uid, mode_t mode) { const auto fullPath = "/data/local/tmp/" + path; @@ -986,8 +986,8 @@ protected: clearAppData(); ASSERT_TRUE(mkdirs("/data/local/tmp/user/0", 0700)); ASSERT_TRUE(mkdirs("/data/local/tmp/user_de/0", 0700)); - ASSERT_TRUE(mkdirs("/data/local/tmp/misc_ce/0/supplemental", 0700)); - ASSERT_TRUE(mkdirs("/data/local/tmp/misc_de/0/supplemental", 0700)); + ASSERT_TRUE(mkdirs("/data/local/tmp/misc_ce/0/sdksandbox", 0700)); + ASSERT_TRUE(mkdirs("/data/local/tmp/misc_de/0/sdksandbox", 0700)); init_globals_from_data_and_root(); } @@ -1006,7 +1006,7 @@ private: } }; -TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData) { +TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData) { android::os::CreateAppDataResult result; android::os::CreateAppDataArgs args = createAppDataArgs(); args.packageName = "com.foo"; @@ -1015,24 +1015,22 @@ TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData) { // Create the app user data. ASSERT_BINDER_SUCCESS(service->createAppData(args, &result)); - CheckFileAccess("misc_ce/0/supplemental/com.foo", kSystemUid, S_IFDIR | 0751); - CheckFileAccess("misc_ce/0/supplemental/com.foo/shared", kTestAppSupplementalUid, - S_IFDIR | 0700); - CheckFileAccess("misc_ce/0/supplemental/com.foo/shared/cache", kTestAppSupplementalUid, + CheckFileAccess("misc_ce/0/sdksandbox/com.foo", kSystemUid, S_IFDIR | 0751); + CheckFileAccess("misc_ce/0/sdksandbox/com.foo/shared", kTestSdkSandboxUid, S_IFDIR | 0700); + CheckFileAccess("misc_ce/0/sdksandbox/com.foo/shared/cache", kTestSdkSandboxUid, S_IFDIR | S_ISGID | 0771); - CheckFileAccess("misc_ce/0/supplemental/com.foo/shared/code_cache", kTestAppSupplementalUid, + CheckFileAccess("misc_ce/0/sdksandbox/com.foo/shared/code_cache", kTestSdkSandboxUid, S_IFDIR | S_ISGID | 0771); - CheckFileAccess("misc_de/0/supplemental/com.foo", kSystemUid, S_IFDIR | 0751); - CheckFileAccess("misc_de/0/supplemental/com.foo/shared", kTestAppSupplementalUid, - S_IFDIR | 0700); - CheckFileAccess("misc_de/0/supplemental/com.foo/shared/cache", kTestAppSupplementalUid, + CheckFileAccess("misc_de/0/sdksandbox/com.foo", kSystemUid, S_IFDIR | 0751); + CheckFileAccess("misc_de/0/sdksandbox/com.foo/shared", kTestSdkSandboxUid, S_IFDIR | 0700); + CheckFileAccess("misc_de/0/sdksandbox/com.foo/shared/cache", kTestSdkSandboxUid, S_IFDIR | S_ISGID | 0771); - CheckFileAccess("misc_de/0/supplemental/com.foo/shared/code_cache", kTestAppSupplementalUid, + CheckFileAccess("misc_de/0/sdksandbox/com.foo/shared/code_cache", kTestSdkSandboxUid, S_IFDIR | S_ISGID | 0771); } -TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData_WithoutDeFlag) { +TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData_WithoutDeFlag) { android::os::CreateAppDataResult result; android::os::CreateAppDataArgs args = createAppDataArgs(); args.packageName = "com.foo"; @@ -1042,13 +1040,13 @@ TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData_Without ASSERT_BINDER_SUCCESS(service->createAppData(args, &result)); // Only CE paths should exist - CheckFileAccess("misc_ce/0/supplemental/com.foo", kSystemUid, S_IFDIR | 0751); + CheckFileAccess("misc_ce/0/sdksandbox/com.foo", kSystemUid, S_IFDIR | 0751); // DE paths should not exist - ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/supplemental/com.foo")); + ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/sdksandbox/com.foo")); } -TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData_WithoutCeFlag) { +TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData_WithoutCeFlag) { android::os::CreateAppDataResult result; android::os::CreateAppDataArgs args = createAppDataArgs(); args.packageName = "com.foo"; @@ -1058,10 +1056,10 @@ TEST_F(AppSupplementalDataTest, CreateAppData_CreatesSupplementalAppData_Without ASSERT_BINDER_SUCCESS(service->createAppData(args, &result)); // CE paths should not exist - ASSERT_FALSE(exists("/data/local/tmp/misc_ce/0/supplemental/com.foo")); + ASSERT_FALSE(exists("/data/local/tmp/misc_ce/0/sdksandbox/com.foo")); // Only DE paths should exist - CheckFileAccess("misc_de/0/supplemental/com.foo", kSystemUid, S_IFDIR | 0751); + CheckFileAccess("misc_de/0/sdksandbox/com.foo", kSystemUid, S_IFDIR | 0751); } } // namespace installd diff --git a/cmds/installd/tests/installd_utils_test.cpp b/cmds/installd/tests/installd_utils_test.cpp index 8d1ccdc5d6..17802a30e3 100644 --- a/cmds/installd/tests/installd_utils_test.cpp +++ b/cmds/installd/tests/installd_utils_test.cpp @@ -658,38 +658,36 @@ TEST_F(UtilsTest, TestCreateDirIfNeeded) { ASSERT_NE(0, create_dir_if_needed("/data/local/tmp/user/0/bar/baz", 0700)); } -TEST_F(UtilsTest, TestSupplementalDataPaths) { +TEST_F(UtilsTest, TestSdkSandboxDataPaths) { // Ce data paths - EXPECT_EQ("/data/misc_ce/0/supplemental", - create_data_misc_supplemental_path(nullptr, /*isCeData=*/true, 0)); - EXPECT_EQ("/data/misc_ce/10/supplemental", - create_data_misc_supplemental_path(nullptr, true, 10)); + EXPECT_EQ("/data/misc_ce/0/sdksandbox", + create_data_misc_sdk_sandbox_path(nullptr, /*isCeData=*/true, 0)); + EXPECT_EQ("/data/misc_ce/10/sdksandbox", create_data_misc_sdk_sandbox_path(nullptr, true, 10)); - EXPECT_EQ("/data/misc_ce/0/supplemental/com.foo", - create_data_misc_supplemental_package_path(nullptr, true, 0, "com.foo")); - EXPECT_EQ("/data/misc_ce/10/supplemental/com.foo", - create_data_misc_supplemental_package_path(nullptr, true, 10, "com.foo")); + EXPECT_EQ("/data/misc_ce/0/sdksandbox/com.foo", + create_data_misc_sdk_sandbox_package_path(nullptr, true, 0, "com.foo")); + EXPECT_EQ("/data/misc_ce/10/sdksandbox/com.foo", + create_data_misc_sdk_sandbox_package_path(nullptr, true, 10, "com.foo")); - EXPECT_EQ("/data/misc_ce/0/supplemental/com.foo/shared", - create_data_misc_supplemental_shared_path(nullptr, true, 0, "com.foo")); - EXPECT_EQ("/data/misc_ce/10/supplemental/com.foo/shared", - create_data_misc_supplemental_shared_path(nullptr, true, 10, "com.foo")); + EXPECT_EQ("/data/misc_ce/0/sdksandbox/com.foo/shared", + create_data_misc_sdk_sandbox_shared_path(nullptr, true, 0, "com.foo")); + EXPECT_EQ("/data/misc_ce/10/sdksandbox/com.foo/shared", + create_data_misc_sdk_sandbox_shared_path(nullptr, true, 10, "com.foo")); // De data paths - EXPECT_EQ("/data/misc_de/0/supplemental", - create_data_misc_supplemental_path(nullptr, /*isCeData=*/false, 0)); - EXPECT_EQ("/data/misc_de/10/supplemental", - create_data_misc_supplemental_path(nullptr, false, 10)); - - EXPECT_EQ("/data/misc_de/0/supplemental/com.foo", - create_data_misc_supplemental_package_path(nullptr, false, 0, "com.foo")); - EXPECT_EQ("/data/misc_de/10/supplemental/com.foo", - create_data_misc_supplemental_package_path(nullptr, false, 10, "com.foo")); - - EXPECT_EQ("/data/misc_de/0/supplemental/com.foo/shared", - create_data_misc_supplemental_shared_path(nullptr, false, 0, "com.foo")); - EXPECT_EQ("/data/misc_de/10/supplemental/com.foo/shared", - create_data_misc_supplemental_shared_path(nullptr, false, 10, "com.foo")); + EXPECT_EQ("/data/misc_de/0/sdksandbox", + create_data_misc_sdk_sandbox_path(nullptr, /*isCeData=*/false, 0)); + EXPECT_EQ("/data/misc_de/10/sdksandbox", create_data_misc_sdk_sandbox_path(nullptr, false, 10)); + + EXPECT_EQ("/data/misc_de/0/sdksandbox/com.foo", + create_data_misc_sdk_sandbox_package_path(nullptr, false, 0, "com.foo")); + EXPECT_EQ("/data/misc_de/10/sdksandbox/com.foo", + create_data_misc_sdk_sandbox_package_path(nullptr, false, 10, "com.foo")); + + EXPECT_EQ("/data/misc_de/0/sdksandbox/com.foo/shared", + create_data_misc_sdk_sandbox_shared_path(nullptr, false, 0, "com.foo")); + EXPECT_EQ("/data/misc_de/10/sdksandbox/com.foo/shared", + create_data_misc_sdk_sandbox_shared_path(nullptr, false, 10, "com.foo")); } TEST_F(UtilsTest, WaitChild) { diff --git a/cmds/installd/utils.cpp b/cmds/installd/utils.cpp index 6650b761e1..992425d56e 100644 --- a/cmds/installd/utils.cpp +++ b/cmds/installd/utils.cpp @@ -198,39 +198,39 @@ std::string create_data_user_de_path(const char* volume_uuid, userid_t userid) { } /** - * Create the path name where supplemental data for all apps will be stored. - * E.g. /data/misc_ce/0/supplemental + * Create the path name where sdk_sandbox data for all apps will be stored. + * E.g. /data/misc_ce/0/sdksandbox */ -std::string create_data_misc_supplemental_path(const char* uuid, bool isCeData, userid_t user) { +std::string create_data_misc_sdk_sandbox_path(const char* uuid, bool isCeData, userid_t user) { std::string data(create_data_path(uuid)); if (isCeData) { - return StringPrintf("%s/misc_ce/%d/supplemental", data.c_str(), user); + return StringPrintf("%s/misc_ce/%d/sdksandbox", data.c_str(), user); } else { - return StringPrintf("%s/misc_de/%d/supplemental", data.c_str(), user); + return StringPrintf("%s/misc_de/%d/sdksandbox", data.c_str(), user); } } /** * Create the path name where code data for all codes in a particular app will be stored. - * E.g. /data/misc_ce/0/supplemental/<app-name> + * E.g. /data/misc_ce/0/sdksandbox/<app-name> */ -std::string create_data_misc_supplemental_package_path(const char* volume_uuid, bool isCeData, - userid_t user, const char* package_name) { +std::string create_data_misc_sdk_sandbox_package_path(const char* volume_uuid, bool isCeData, + userid_t user, const char* package_name) { check_package_name(package_name); return StringPrintf("%s/%s", - create_data_misc_supplemental_path(volume_uuid, isCeData, user).c_str(), + create_data_misc_sdk_sandbox_path(volume_uuid, isCeData, user).c_str(), package_name); } /** * Create the path name where shared code data for a particular app will be stored. - * E.g. /data/misc_ce/0/supplemental/<app-name>/shared + * E.g. /data/misc_ce/0/sdksandbox/<app-name>/shared */ -std::string create_data_misc_supplemental_shared_path(const char* volume_uuid, bool isCeData, - userid_t user, const char* package_name) { +std::string create_data_misc_sdk_sandbox_shared_path(const char* volume_uuid, bool isCeData, + userid_t user, const char* package_name) { return StringPrintf("%s/shared", - create_data_misc_supplemental_package_path(volume_uuid, isCeData, user, - package_name) + create_data_misc_sdk_sandbox_package_path(volume_uuid, isCeData, user, + package_name) .c_str()); } diff --git a/cmds/installd/utils.h b/cmds/installd/utils.h index 2d00845c54..4b56f99de2 100644 --- a/cmds/installd/utils.h +++ b/cmds/installd/utils.h @@ -60,12 +60,12 @@ std::string create_data_user_de_package_path(const char* volume_uuid, std::string create_data_user_ce_package_path_as_user_link( const char* volume_uuid, userid_t userid, const char* package_name); -std::string create_data_misc_supplemental_path(const char* volume_uuid, bool isCeData, - userid_t userid); -std::string create_data_misc_supplemental_package_path(const char* volume_uuid, bool isCeData, - userid_t userid, const char* package_name); -std::string create_data_misc_supplemental_shared_path(const char* volume_uuid, bool isCeData, +std::string create_data_misc_sdk_sandbox_path(const char* volume_uuid, bool isCeData, + userid_t userid); +std::string create_data_misc_sdk_sandbox_package_path(const char* volume_uuid, bool isCeData, userid_t userid, const char* package_name); +std::string create_data_misc_sdk_sandbox_shared_path(const char* volume_uuid, bool isCeData, + userid_t userid, const char* package_name); std::string create_data_misc_ce_rollback_base_path(const char* volume_uuid, userid_t user); std::string create_data_misc_de_rollback_base_path(const char* volume_uuid, userid_t user); |