Fix drag and drop URI permission grants

Currently cross app drag and drop with content URIs
only works for Owner. This is because the source Uid
is initialized after a Binder.clearCallingIdentity call.
The real source app identity is lost and things work
by accident for Owner only.

Bug: 25232077
Change-Id: Iaaaa735a04909a3b05fae7a7a421dbf02206cd68
This commit is contained in:
Vladislav Kaznacheev
2015-10-23 18:11:55 -07:00
parent 05e6287b7f
commit e71a321305
2 changed files with 2 additions and 2 deletions

View File

@@ -77,7 +77,6 @@ class DragState {
mSurfaceControl = surface;
mFlags = flags;
mLocalWin = localWin;
mUid = Binder.getCallingUid();
mNotifiedWindows = new ArrayList<WindowState>();
}

View File

@@ -6970,7 +6970,7 @@ public class WindowManagerService extends IWindowManager.Stub
+ " asbinder=" + window.asBinder());
}
final int callerPid = Binder.getCallingPid();
final int callerUid = Binder.getCallingUid();
final long origId = Binder.clearCallingIdentity();
IBinder token = null;
@@ -6995,6 +6995,7 @@ public class WindowManagerService extends IWindowManager.Stub
final IBinder winBinder = window.asBinder();
token = new Binder();
mDragState = new DragState(this, token, surface, flags, winBinder);
mDragState.mUid = callerUid;
token = mDragState.mToken = new Binder();
// 5 second timeout for this window to actually begin the drag