diff options
| author | Lucas Dupin <dupin@google.com> | 2017-11-01 22:32:29 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-11-01 22:32:29 +0000 |
| commit | 80f05cee869995286acf7230f1733c7fbc12f308 (patch) | |
| tree | 5301743edb949fe971020d6f99ec941752888794 /core/java | |
| parent | 44aa5871a4b66f5e6452d3733013c81829e6abe9 (diff) | |
| parent | b40dad566a15a732a3de5f600f964eb60be58f8b (diff) | |
Merge "Fix slice permissions to allow uri grants"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/slice/SliceProvider.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/app/slice/SliceProvider.java b/core/java/android/app/slice/SliceProvider.java index 33825b4b5f41..da718dc9a2a2 100644 --- a/core/java/android/app/slice/SliceProvider.java +++ b/core/java/android/app/slice/SliceProvider.java @@ -19,15 +19,19 @@ import android.Manifest.permission; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentValues; +import android.content.Intent; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; +import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; +import android.os.Process; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; +import android.os.UserHandle; import android.util.Log; import java.util.concurrent.CountDownLatch; @@ -143,9 +147,13 @@ public abstract class SliceProvider extends ContentProvider { @Override public Bundle call(String method, String arg, Bundle extras) { if (method.equals(METHOD_SLICE)) { - getContext().enforceCallingPermission(permission.BIND_SLICE, - "Slice binding requires the permission BIND_SLICE"); Uri uri = extras.getParcelable(EXTRA_BIND_URI); + if (!UserHandle.isSameApp(Binder.getCallingUid(), Process.myUid())) { + getContext().enforceUriPermission(uri, permission.BIND_SLICE, + permission.BIND_SLICE, Binder.getCallingPid(), Binder.getCallingUid(), + Intent.FLAG_GRANT_WRITE_URI_PERMISSION, + "Slice binding requires the permission BIND_SLICE"); + } Slice s = handleBindSlice(uri); Bundle b = new Bundle(); |
