Merge "DO NOT MERGE. KEY_INTENT shouldn't grant permissions." into oc-dev
am: 31c5adc279
Change-Id: Id9a5a0216f1f26e059df45cc866582fe04cdf47d
This commit is contained in:
@@ -4704,6 +4704,10 @@ public class AccountManagerService
|
||||
protected void checkKeyIntent(
|
||||
int authUid,
|
||||
Intent intent) throws SecurityException {
|
||||
intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
|
||||
| Intent.FLAG_GRANT_PREFIX_URI_PERMISSION));
|
||||
long bid = Binder.clearCallingIdentity();
|
||||
try {
|
||||
PackageManager pm = mContext.getPackageManager();
|
||||
|
||||
@@ -8700,6 +8700,19 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Bail early if system is trying to hand out permissions directly; it
|
||||
// must always grant permissions on behalf of someone explicit.
|
||||
final int callingAppId = UserHandle.getAppId(callingUid);
|
||||
if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) {
|
||||
if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) {
|
||||
// Exempted authority for cropping user photos in Settings app
|
||||
} else {
|
||||
Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission"
|
||||
+ " grant to " + grantUri + "; use startActivityAsCaller() instead");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
final String authority = grantUri.uri.getAuthority();
|
||||
final ProviderInfo pi = getProviderInfoLocked(authority, grantUri.sourceUserId,
|
||||
MATCH_DEBUG_TRIAGED_MISSING);
|
||||
@@ -8795,16 +8808,6 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
|
||||
// Third... does the caller itself have permission to access
|
||||
// this uri?
|
||||
final int callingAppId = UserHandle.getAppId(callingUid);
|
||||
if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) {
|
||||
if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) {
|
||||
// Exempted authority for cropping user photos in Settings app
|
||||
} else {
|
||||
Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission"
|
||||
+ " grant to " + grantUri + "; use startActivityAsCaller() instead");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (!checkHoldingPermissionsLocked(pm, pi, grantUri, callingUid, modeFlags)) {
|
||||
// Require they hold a strong enough Uri permission
|
||||
if (!checkUriPermissionLocked(grantUri, callingUid, modeFlags)) {
|
||||
|
||||
Reference in New Issue
Block a user