summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author ByungSeok Jung <b0202.jung@samsung.corp-partner.google.com> 2024-04-09 15:09:17 -0700
committer Chris Li <lihongyu@google.com> 2024-04-10 06:33:29 +0000
commitb02d6cdb30e14fc62ea766300b28cbc741e7604a (patch)
treef77ae74dbcd67e3f5b8ab4d91239064daf9d206a
parent55a2e077cfc9b0de2b24e59d78cc9c051e463def (diff)
StartActivity in TaskFragments without globalLock held
If a intent has Content Uri, security exception can occur because ContentProviderHelper always return "Permission Deinied" if globalLock is held. So, startActivity in TaskFragments without globalLock held. Bug: 333529514 Test: Launch Intent with Content Uri Change-Id: Ia43ea98ae8026e1515ee4b87b1f1d1aa6138a84b
-rw-r--r--services/core/java/com/android/server/wm/WindowOrganizerController.java4
1 files changed, 2 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index 14ec41f072dd..e7088832500f 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -1367,10 +1367,10 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
final IBinder callerActivityToken = operation.getActivityToken();
final Intent activityIntent = operation.getActivityIntent();
final Bundle activityOptions = operation.getBundle();
- final int result = mService.getActivityStartController()
+ final int result = waitAsyncStart(() -> mService.getActivityStartController()
.startActivityInTaskFragment(taskFragment, activityIntent, activityOptions,
callerActivityToken, caller.mUid, caller.mPid,
- errorCallbackToken);
+ errorCallbackToken));
if (!isStartResultSuccessful(result)) {
sendTaskFragmentOperationFailure(organizer, errorCallbackToken, taskFragment,
opType, convertStartFailureToThrowable(result, activityIntent));