diff options
author | Shirish Kalele <kalele@google.com> | 2015-08-07 20:25:06 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-08-07 20:25:06 +0000 |
commit | 027e3b7f51cd172dae89f69cc358363b0cf20f5f (patch) | |
tree | 397f00faf444a76a1af32674b47fc42599e55d69 /core/java/android/net | |
parent | 288e82f8f67db894c43bf4ea659ca832f979c65a (diff) | |
parent | 4cab12d91d120ee93e135050b78edb335e9ac91b (diff) | |
download | frameworks_base-027e3b7f51cd172dae89f69cc358363b0cf20f5f.zip frameworks_base-027e3b7f51cd172dae89f69cc358363b0cf20f5f.tar.gz frameworks_base-027e3b7f51cd172dae89f69cc358363b0cf20f5f.tar.bz2 |
Merge "Fix check for caller being the active network scorer" into mnc-dev
Diffstat (limited to 'core/java/android/net')
-rw-r--r-- | core/java/android/net/NetworkScorerAppManager.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/core/java/android/net/NetworkScorerAppManager.java b/core/java/android/net/NetworkScorerAppManager.java index 46f7194..29daf35 100644 --- a/core/java/android/net/NetworkScorerAppManager.java +++ b/core/java/android/net/NetworkScorerAppManager.java @@ -23,6 +23,7 @@ import android.app.AppOpsManager; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.UserHandle; @@ -54,6 +55,9 @@ public final class NetworkScorerAppManager { /** Package name of this scorer app. */ public final String mPackageName; + /** UID of the scorer app. */ + public final int mPackageUid; + /** Name of this scorer app for display. */ public final CharSequence mScorerName; @@ -64,10 +68,11 @@ public final class NetworkScorerAppManager { */ public final String mConfigurationActivityClassName; - public NetworkScorerAppData(String packageName, CharSequence scorerName, + public NetworkScorerAppData(String packageName, int packageUid, CharSequence scorerName, @Nullable String configurationActivityClassName) { mScorerName = scorerName; mPackageName = packageName; + mPackageUid = packageUid; mConfigurationActivityClassName = configurationActivityClassName; } } @@ -125,7 +130,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. scorers.add(new NetworkScorerAppData(receiverInfo.packageName, - receiverInfo.loadLabel(pm), configurationActivityClassName)); + receiverInfo.applicationInfo.uid, receiverInfo.loadLabel(pm), + configurationActivityClassName)); } return scorers; @@ -187,13 +193,9 @@ public final class NetworkScorerAppManager { if (defaultApp == null) { return false; } - AppOpsManager appOpsMgr = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); - try { - appOpsMgr.checkPackage(callingUid, defaultApp.mPackageName); - } catch (SecurityException e) { + if (callingUid != defaultApp.mPackageUid) { return false; } - // To be extra safe, ensure the caller holds the SCORE_NETWORKS permission. It always // should, since it couldn't become the active scorer otherwise, but this can't hurt. return context.checkCallingPermission(Manifest.permission.SCORE_NETWORKS) == |