summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-08-19 19:08:37 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-08-19 19:08:37 +0000
commit11f6a1013f4f7c76db108bdce37be96dc0c65553 (patch)
tree0e932412b15802e699fe2834f3df7599de4bd7de
parent4c2c1530bf2e31d5f1e03a7085141a97581d20ef (diff)
parent19a655d70c100253b5874f3d9b751877b348e5c4 (diff)
Merge "Prevend user spoofing in isRequestPinItemSupported" into sc-dev
-rw-r--r--services/core/java/com/android/server/pm/ShortcutService.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index fcbf40e29933..62d6717e847a 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -1664,6 +1664,19 @@ public class ShortcutService extends IShortcutService.Stub {
mContext.enforceCallingPermission(permission, message);
}
+ private void verifyCallerUserId(@UserIdInt int userId) {
+ if (isCallerSystem()) {
+ return; // no check
+ }
+
+ final int callingUid = injectBinderCallingUid();
+
+ // Otherwise, make sure the arguments are valid.
+ if (UserHandle.getUserId(callingUid) != userId) {
+ throw new SecurityException("Invalid user-ID");
+ }
+ }
+
private void verifyCaller(@NonNull String packageName, @UserIdInt int userId) {
Preconditions.checkStringNotEmpty(packageName, "packageName");
@@ -2847,6 +2860,8 @@ public class ShortcutService extends IShortcutService.Stub {
@Override
public boolean isRequestPinItemSupported(int callingUserId, int requestType) {
+ verifyCallerUserId(callingUserId);
+
final long token = injectClearCallingIdentity();
try {
return mShortcutRequestPinProcessor