summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author rambowang <rambowang@google.com> 2024-07-09 11:18:50 -0500
committer rambowang <rambowang@google.com> 2024-07-09 11:18:50 -0500
commit91d7368fa89ff59a2b1fbe6a269b8b9c63abf0d0 (patch)
tree71d68b4f5e6dad5e6ebed3b8a1c942021d37f68e
parent5460f4c5735e90d10ae70148b7f5a88c52699d4e (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.java9
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");
}