From c38dc5456c6e701678b2d2ffe122328775273179 Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Fri, 4 Jun 2021 13:19:22 -0700 Subject: [PATCH] Remove invalid source tags in AppOpsPolicy Ensure that, if present, null, "null", and "" attribution tags are not considered valid source tags Test: build Bug: 189484870 Change-Id: I65601c9bb79399bf0f63fbb540090ed3ed6f8337 --- .../com/android/server/policy/AppOpsPolicy.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/policy/AppOpsPolicy.java b/services/core/java/com/android/server/policy/AppOpsPolicy.java index 607bc569ad649..50c4ade732b03 100644 --- a/services/core/java/com/android/server/policy/AppOpsPolicy.java +++ b/services/core/java/com/android/server/policy/AppOpsPolicy.java @@ -43,8 +43,6 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.util.function.DecFunction; import com.android.internal.util.function.HeptFunction; import com.android.internal.util.function.HexFunction; -import com.android.internal.util.function.NonaFunction; -import com.android.internal.util.function.OctFunction; import com.android.internal.util.function.QuadFunction; import com.android.internal.util.function.QuintFunction; import com.android.internal.util.function.TriFunction; @@ -313,6 +311,17 @@ public final class AppOpsPolicy implements AppOpsManagerInternal.CheckOpsDelegat if (appIdTags == null) { appIdTags = new ArrayMap<>(); } + + // Remove any invalid tags + boolean nullRemoved = packageTags.remove(null); + boolean nullStrRemoved = packageTags.remove("null"); + boolean emptyRemoved = packageTags.remove(""); + if (nullRemoved || nullStrRemoved || emptyRemoved) { + Log.e(LOG_TAG, "Attempted to add invalid source attribution tag, removed " + + "null: " + nullRemoved + " removed \"null\": " + nullStrRemoved + + " removed empty string: " + emptyRemoved); + } + appIdTags.put(packageName, packageTags); datastore.put(appId, appIdTags); } else if (appIdTags != null) {