summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeremy Joslin <jjoslin@google.com> 2016-01-06 21:48:30 +0000
committer android-build-merger <android-build-merger@google.com> 2016-01-06 21:48:30 +0000
commit0807537ac25bb0557a009e64eb1e399296c7531b (patch)
treea2804f3fdb92e679dac92f7dd8e72ce1c37149b9
parenta7582b55e789f76fa18364950a93193ba7c0b2dd (diff)
parent2a5f880c9e3c14c5e3421259f7904d9c352f79dc (diff)
Exit getAllValidScorers early if not the primary. am: 5b294b45d0
am: 2a5f880c9e * commit '2a5f880c9e3c14c5e3421259f7904d9c352f79dc': Exit getAllValidScorers early if not the primary.
-rw-r--r--core/java/android/net/NetworkScorerAppManager.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/core/java/android/net/NetworkScorerAppManager.java b/core/java/android/net/NetworkScorerAppManager.java
index 29daf352e1d3..5880e5dcccef 100644
--- a/core/java/android/net/NetworkScorerAppManager.java
+++ b/core/java/android/net/NetworkScorerAppManager.java
@@ -33,6 +33,7 @@ import android.util.Log;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
/**
@@ -90,8 +91,13 @@ public final class NetworkScorerAppManager {
* @return the list of scorers, or the empty list if there are no valid scorers.
*/
public static Collection<NetworkScorerAppData> getAllValidScorers(Context context) {
- List<NetworkScorerAppData> scorers = new ArrayList<>();
+ // Network scorer apps can only run as the primary user so exit early if we're not the
+ // primary user.
+ if (UserHandle.getCallingUserId() != 0 /*USER_SYSTEM*/) {
+ return Collections.emptyList();
+ }
+ List<NetworkScorerAppData> scorers = new ArrayList<>();
PackageManager pm = context.getPackageManager();
// Only apps installed under the primary user of the device can be scorers.
List<ResolveInfo> receivers =
@@ -104,8 +110,9 @@ public final class NetworkScorerAppManager {
continue;
}
if (!permission.BROADCAST_NETWORK_PRIVILEGED.equals(receiverInfo.permission)) {
- // Receiver doesn't require the BROADCAST_NETWORK_PRIVILEGED permission, which means
- // anyone could trigger network scoring and flood the framework with score requests.
+ // Receiver doesn't require the BROADCAST_NETWORK_PRIVILEGED permission, which
+ // means anyone could trigger network scoring and flood the framework with score
+ // requests.
continue;
}
if (pm.checkPermission(permission.SCORE_NETWORKS, receiverInfo.packageName) !=
@@ -127,8 +134,8 @@ public final class NetworkScorerAppManager {
}
}
- // NOTE: loadLabel will attempt to load the receiver's label and fall back to the app
- // label if none is present.
+ // NOTE: loadLabel will attempt to load the receiver's label and fall back to the
+ // app label if none is present.
scorers.add(new NetworkScorerAppData(receiverInfo.packageName,
receiverInfo.applicationInfo.uid, receiverInfo.loadLabel(pm),
configurationActivityClassName));