diff options
| author | 2024-07-09 11:18:50 -0500 | |
|---|---|---|
| committer | 2024-07-09 11:18:50 -0500 | |
| commit | 91d7368fa89ff59a2b1fbe6a269b8b9c63abf0d0 (patch) | |
| tree | 71d68b4f5e6dad5e6ebed3b8a1c942021d37f68e | |
| parent | 5460f4c5735e90d10ae70148b7f5a88c52699d4e (diff) | |
Check system process UID with a multi-user-aware way
This CL calls UserHandle.getAppId to compare system process UIDs
with Process.XXX_UID constants which are app id instead of UID in
multiple user context.
Bug: 328511085
Test: atest CtsWebkitTestCases
Flag: com.android.internal.telephony.flags.support_phone_uid_check_for_multiuser
Change-Id: Icc0f3ed6c7e6de868c88b13e3b38996c9193a8b8
| -rw-r--r-- | core/java/android/webkit/WebViewFactory.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 10344792eee2..c53a0e158dea 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -36,6 +36,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.Trace; +import android.os.UserHandle; import android.text.TextUtils; import android.util.AndroidRuntimeException; import android.util.ArraySet; @@ -339,10 +340,10 @@ public final class WebViewFactory { if (sProviderInstance != null) return sProviderInstance; sTimestamps.mWebViewLoadStart = SystemClock.uptimeMillis(); - final int uid = android.os.Process.myUid(); - if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID - || uid == android.os.Process.PHONE_UID || uid == android.os.Process.NFC_UID - || uid == android.os.Process.BLUETOOTH_UID) { + final int appId = UserHandle.getAppId(android.os.Process.myUid()); + if (appId == android.os.Process.ROOT_UID || appId == android.os.Process.SYSTEM_UID + || appId == android.os.Process.PHONE_UID || appId == android.os.Process.NFC_UID + || appId == android.os.Process.BLUETOOTH_UID) { throw new UnsupportedOperationException( "For security reasons, WebView is not allowed in privileged processes"); } |