diff options
| author | 2016-05-02 21:21:11 +0000 | |
|---|---|---|
| committer | 2016-05-02 21:21:11 +0000 | |
| commit | 7ac638702de3b8af0a02db764adb95f2d10d1524 (patch) | |
| tree | bdec054bf2329c571172bd6ebd54569f2f982635 | |
| parent | 343600c3ecff31826e50d40821927e446adb9b0a (diff) | |
| parent | 6d5f80d13b06d439db08fcd5d25490edb322f923 (diff) | |
Backport ChooserTarget package source check from N am: 82b9565bd1
am: 6d5f80d13b
* commit '6d5f80d13b06d439db08fcd5d25490edb322f923':
Backport ChooserTarget package source check from N
Change-Id: Iec7902498e2cfe53ce16dc9faf2d91340f416799
| -rw-r--r-- | core/java/com/android/internal/app/ChooserActivity.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 7699673701f0..e137f9407a3d 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -656,7 +656,19 @@ public class ChooserActivity extends ResolverActivity { } intent.setComponent(mChooserTarget.getComponentName()); intent.putExtras(mChooserTarget.getIntentExtras()); - activity.startActivityAsCaller(intent, options, true, userId); + + // Important: we will ignore the target security checks in ActivityManager + // if and only if the ChooserTarget's target package is the same package + // where we got the ChooserTargetService that provided it. This lets a + // ChooserTargetService provide a non-exported or permission-guarded target + // to the chooser for the user to pick. + // + // If mSourceInfo is null, we got this ChooserTarget from the caller or elsewhere + // so we'll obey the caller's normal security checks. + final boolean ignoreTargetSecurity = mSourceInfo != null + && mSourceInfo.getResolvedComponentName().getPackageName() + .equals(mChooserTarget.getComponentName().getPackageName()); + activity.startActivityAsCaller(intent, options, ignoreTargetSecurity, userId); return true; } |