diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 3d1570476b48..8685be6567c6 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -4427,7 +4427,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { * @param checkShell whether to prevent shell from access if there's a debugging restriction * @param message the message to log on security exception */ - private void enforceCrossUserPermission(int callingUid, int userId, + private void enforceCrossUserPermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, boolean requirePermissionWhenSameUser, String message) { if (userId < 0) { @@ -4444,7 +4444,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { return; } String errorMessage = buildInvalidCrossUserPermissionMessage( - message, requireFullPermission); + callingUid, userId, message, requireFullPermission); Slog.w(TAG, errorMessage); throw new SecurityException(errorMessage); } @@ -4463,7 +4463,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { * @param checkShell whether to prevent shell from access if there's a debugging restriction * @param message the message to log on security exception */ - private void enforceCrossUserOrProfilePermission(int callingUid, int userId, + private void enforceCrossUserOrProfilePermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, String message) { if (userId < 0) { @@ -4489,7 +4489,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { return; } String errorMessage = buildInvalidCrossUserOrProfilePermissionMessage( - message, requireFullPermission, isSameProfileGroup); + callingUid, userId, message, requireFullPermission, isSameProfileGroup); Slog.w(TAG, errorMessage); throw new SecurityException(errorMessage); } @@ -4524,44 +4524,48 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - private static String buildInvalidCrossUserPermissionMessage( - String message, boolean requireFullPermission) { + private static String buildInvalidCrossUserPermissionMessage(int callingUid, + @UserIdInt int userId, String message, boolean requireFullPermission) { StringBuilder builder = new StringBuilder(); if (message != null) { builder.append(message); builder.append(": "); } - builder.append("Requires "); + builder.append("UID "); + builder.append(callingUid); + builder.append(" requires "); builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL); - if (requireFullPermission) { - builder.append("."); - return builder.toString(); + if (!requireFullPermission) { + builder.append(" or "); + builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS); } - builder.append(" or "); - builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS); + builder.append(" to access user "); + builder.append(userId); builder.append("."); return builder.toString(); } - private static String buildInvalidCrossUserOrProfilePermissionMessage( - String message, boolean requireFullPermission, boolean isSameProfileGroup) { + private static String buildInvalidCrossUserOrProfilePermissionMessage(int callingUid, + @UserIdInt int userId, String message, boolean requireFullPermission, + boolean isSameProfileGroup) { StringBuilder builder = new StringBuilder(); if (message != null) { builder.append(message); builder.append(": "); } - builder.append("Requires "); + builder.append("UID "); + builder.append(callingUid); + builder.append(" requires "); builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL); - if (requireFullPermission) { - builder.append("."); - return builder.toString(); - } - builder.append(" or "); - builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS); - if (isSameProfileGroup) { + if (!requireFullPermission) { builder.append(" or "); - builder.append(android.Manifest.permission.INTERACT_ACROSS_PROFILES); + builder.append(android.Manifest.permission.INTERACT_ACROSS_USERS); + if (isSameProfileGroup) { + builder.append(" or "); + builder.append(android.Manifest.permission.INTERACT_ACROSS_PROFILES); + } } + builder.append(" to access user "); builder.append("."); return builder.toString(); } |