From e66b6890ee59d108ae5c608f6ec8d4ad20cb06a8 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Tue, 29 Apr 2014 12:36:47 +0100 Subject: [PATCH] Assign AID_EVERYONE gid to newly-created processes Change-Id: I0ec45e07d77a4e6a47b6ba0d761c8375f433f528 --- core/java/android/os/Process.java | 6 ++++++ core/java/android/os/UserHandle.java | 8 ++++++++ .../com/android/server/am/ActivityManagerService.java | 11 ++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 96f42ccdeaa7e..5617b80d49905 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -145,6 +145,12 @@ public class Process { */ public static final int LAST_ISOLATED_UID = 99999; + /** + * Defines the gid shared by all applications running under the same profile. + * @hide + */ + public static final int SHARED_USER_GID = 9997; + /** * First gid for applications to share resources. Used when forward-locking * is enabled but all UserHandles need to be able to read the resources. diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java index 6e693a41230f6..914c170881c3e 100644 --- a/core/java/android/os/UserHandle.java +++ b/core/java/android/os/UserHandle.java @@ -144,6 +144,14 @@ public final class UserHandle implements Parcelable { return uid % PER_USER_RANGE; } + /** + * Returns the gid shared between all apps with this userId. + * @hide + */ + public static final int getUserGid(int userId) { + return getUid(userId, Process.SHARED_USER_GID); + } + /** * Returns the shared app gid for a given uid or appId. * @hide diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 16b9963e6cf2d..4cc75f3233772 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -2735,16 +2735,17 @@ public final class ActivityManagerService extends ActivityManagerNative } /* - * Add shared application GID so applications can share some - * resources like shared libraries + * Add shared application and profile GIDs so applications can share some + * resources like shared libraries and access user-wide resources */ if (permGids == null) { - gids = new int[1]; + gids = new int[2]; } else { - gids = new int[permGids.length + 1]; - System.arraycopy(permGids, 0, gids, 1, permGids.length); + gids = new int[permGids.length + 2]; + System.arraycopy(permGids, 0, gids, 2, permGids.length); } gids[0] = UserHandle.getSharedAppGid(UserHandle.getAppId(uid)); + gids[1] = UserHandle.getUserGid(UserHandle.getUserId(uid)); } if (mFactoryTest != SystemServer.FACTORY_TEST_OFF) { if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL