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

Commit 7e5d0b1f authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Define GID range for external data and OBBs.

To quickly answer the question of "how much data is a UID using?" we
need a GID range to label files on external storage, similar to
the GID ranges already defined for cached and shared data.

Also define a new GID that will be used to label the OBB files shared
between all users under /data/media/obb.

Test: builds, newly added tests pass
Bug: 34263266
Change-Id: I16fb7d166c3dcdeafbf477162d191d3b73ae8ac2
parent 230201dc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,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 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);
extern gid_t multiuser_get_shared_gid(userid_t user_id, appid_t app_id);

/* TODO: switch callers over to multiuser_get_shared_gid() */
+4 −0
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@
#define AID_MEDIA_VIDEO   1056 /* GID for video files on internal media storage */
#define AID_MEDIA_IMAGE   1057 /* GID for image files on internal media storage */
#define AID_TOMBSTONED    1058  /* tombstoned user */
#define AID_MEDIA_OBB     1059 /* GID for OBB files on internal media storage */
/* Changes to this file must be made in AOSP, *not* in internal branches. */

#define AID_SHELL         2000  /* adb and debug shell user */
@@ -165,6 +166,9 @@
#define AID_CACHE_GID_START  20000 /* start of gids for apps to mark cached data */
#define AID_CACHE_GID_END    29999 /* end of gids for apps to mark cached data */

#define AID_EXT_GID_START    30000 /* start of gids for apps to mark external data */
#define AID_EXT_GID_END      39999 /* end of gids for apps to mark external data */

#define AID_SHARED_GID_START 50000 /* start of gids for apps in each user to share */
#define AID_SHARED_GID_END   59999 /* end of gids for apps in each user to share */

+8 −0
Original line number Diff line number Diff line
@@ -37,6 +37,14 @@ gid_t multiuser_get_cache_gid(userid_t user_id, appid_t app_id) {
    }
}

gid_t multiuser_get_ext_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_EXT_GID_START);
    } else {
        return -1;
    }
}

gid_t multiuser_get_shared_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_SHARED_GID_START);
+8 −0
Original line number Diff line number Diff line
@@ -58,6 +58,14 @@ TEST(MultiuserTest, TestCache) {
    EXPECT_EQ(1020000, multiuser_get_cache_gid(10, 10000));
}

TEST(MultiuserTest, TestExt) {
    EXPECT_EQ(-1, multiuser_get_ext_gid(0, 0));
    EXPECT_EQ(-1, multiuser_get_ext_gid(0, 1000));
    EXPECT_EQ(30000, multiuser_get_ext_gid(0, 10000));
    EXPECT_EQ(-1, multiuser_get_ext_gid(0, 50000));
    EXPECT_EQ(1030000, multiuser_get_ext_gid(10, 10000));
}

TEST(MultiuserTest, TestShared) {
    EXPECT_EQ(-1, multiuser_get_shared_gid(0, 0));
    EXPECT_EQ(-1, multiuser_get_shared_gid(0, 1000));