Fix a deadlock due to wtf in BaseBundle
Use Slog.wtf instead of Log.wtf, so that it is
asynchronously reported.
Mark incoming application restrictions as defusable
since they are being unparceled.
Bug: 27811728
Change-Id: I166de69a74417e439ec5ef9159fbbfbfe711dde6
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 6e50155..b6c919e 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -20,6 +20,7 @@
import android.util.ArrayMap;
import android.util.Log;
import android.util.MathUtils;
+import android.util.Slog;
import java.io.Serializable;
import java.util.ArrayList;
@@ -229,7 +230,7 @@
}
if (sShouldDefuse && (mFlags & FLAG_DEFUSABLE) == 0) {
- Log.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may "
+ Slog.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may "
+ "clobber all data inside!", new Throwable());
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 7f0da1e..88f4190 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -2281,6 +2281,7 @@
if (restrictions == null || restrictions.isEmpty()) {
cleanAppRestrictionsForPackage(packageName, userId);
} else {
+ restrictions.setDefusable(true);
// Write the restrictions to XML
writeApplicationRestrictionsLP(packageName, restrictions, userId);
}