Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d02cac6b authored by Hanna Nizhnikava's avatar Hanna Nizhnikava Committed by Automerger Merge Worker
Browse files

Merge "Create utility method for converting sdk_sandbox_uid to app_uid" am:...

Merge "Create utility method for converting sdk_sandbox_uid to app_uid" am: 4dc57edc am: b4c15f5d

Original change: https://android-review.googlesource.com/c/platform/system/core/+/2007910

Change-Id: I7a27fb4153db3ba2d3be000c68d5b8e46b48a2ff
parents 4ef1e171 b4c15f5d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ extern appid_t multiuser_get_app_id(uid_t uid);

extern uid_t multiuser_get_uid(userid_t user_id, appid_t app_id);
extern uid_t multiuser_get_sdk_sandbox_uid(userid_t user_id, appid_t app_id);
extern uid_t multiuser_convert_sdk_sandbox_to_app_uid(uid_t uid);

extern gid_t multiuser_get_cache_gid(userid_t user_id, appid_t app_id);
extern gid_t multiuser_get_ext_gid(userid_t user_id, appid_t app_id);
+10 −0
Original line number Diff line number Diff line
@@ -38,6 +38,16 @@ uid_t multiuser_get_sdk_sandbox_uid(userid_t user_id, appid_t app_id) {
    }
}

uid_t multiuser_convert_sdk_sandbox_to_app_uid(uid_t uid) {
    appid_t app_id = multiuser_get_app_id(uid);
    int sdk_sandbox_offset = AID_SDK_SANDBOX_PROCESS_START - AID_APP_START;
    if (app_id >= AID_SDK_SANDBOX_PROCESS_START && app_id <= AID_SDK_SANDBOX_PROCESS_END) {
        return uid - sdk_sandbox_offset;
    } else {
        return -1;
    }
}

gid_t multiuser_get_cache_gid(userid_t user_id, appid_t app_id) {
    if (app_id >= AID_APP_START && app_id <= AID_APP_END) {
        return multiuser_get_uid(user_id, (app_id - AID_APP_START) + AID_CACHE_GID_START);
+18 −0
Original line number Diff line number Diff line
@@ -47,6 +47,24 @@ TEST(MultiuserTest, TestSdkSandboxUid) {
    EXPECT_EQ(ERR_UID, multiuser_get_sdk_sandbox_uid(10, 50000));
}

TEST(MultiuserTest, TestSdkSandboxUidConvertation) {
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(0));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(1000));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(10000));
    EXPECT_EQ(10000U, multiuser_convert_sdk_sandbox_to_app_uid(20000));
    EXPECT_EQ(15000U, multiuser_convert_sdk_sandbox_to_app_uid(25000));
    EXPECT_EQ(19999U, multiuser_convert_sdk_sandbox_to_app_uid(29999));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(50000));

    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(1000000));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(1001000));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(1010000));
    EXPECT_EQ(1010000U, multiuser_convert_sdk_sandbox_to_app_uid(1020000));
    EXPECT_EQ(1015000U, multiuser_convert_sdk_sandbox_to_app_uid(1025000));
    EXPECT_EQ(1019999U, multiuser_convert_sdk_sandbox_to_app_uid(1029999));
    EXPECT_EQ(ERR_UID, multiuser_convert_sdk_sandbox_to_app_uid(1050000));
}

TEST(MultiuserTest, TestSplitUser) {
    EXPECT_EQ(0U, multiuser_get_user_id(0));
    EXPECT_EQ(0U, multiuser_get_user_id(1000));