diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2015-10-15 16:14:07 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-10-15 16:14:07 +0000 |
commit | d8c80cc7ff540c103e48cf298d196a6b66548134 (patch) | |
tree | 28c01031ad51c405478da596a86eb5ae726c76a6 | |
parent | 7af1ef61493d25c333561071dc8bbc3da8f0a86b (diff) | |
parent | e2ba917b13c0271e018457917a6388a2f84e20ab (diff) | |
download | android_frameworks_opt_net_wifi-d8c80cc7ff540c103e48cf298d196a6b66548134.tar.gz android_frameworks_opt_net_wifi-d8c80cc7ff540c103e48cf298d196a6b66548134.tar.bz2 android_frameworks_opt_net_wifi-d8c80cc7ff540c103e48cf298d196a6b66548134.zip |
am e2ba917b: Merge "Do not throw an exception if appop\'s result is MODE_IGNORED" into mnc-dr-dev
* commit 'e2ba917b13c0271e018457917a6388a2f84e20ab':
Do not throw an exception if appop's result is MODE_IGNORED
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 2b83b6884..b02556614 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -2064,29 +2064,24 @@ public final class WifiServiceImpl extends IWifiManager.Stub { private boolean checkCallerCanAccessScanResults(String callingPackage, int uid) { if (ActivityManager.checkUidPermission(Manifest.permission.ACCESS_FINE_LOCATION, uid) == PackageManager.PERMISSION_GRANTED - && isAppOppAllowed(AppOpsManager.OP_FINE_LOCATION, callingPackage, uid)) { + && checkAppOppAllowed(AppOpsManager.OP_FINE_LOCATION, callingPackage, uid)) { return true; } if (ActivityManager.checkUidPermission(Manifest.permission.ACCESS_COARSE_LOCATION, uid) == PackageManager.PERMISSION_GRANTED - && isAppOppAllowed(AppOpsManager.OP_COARSE_LOCATION, callingPackage, uid)) { + && checkAppOppAllowed(AppOpsManager.OP_COARSE_LOCATION, callingPackage, uid)) { return true; } - // Enforce location permission for apps targeting M and later versions - boolean enforceLocationPermission = true; + boolean apiLevel23App = true; try { - enforceLocationPermission = mContext.getPackageManager().getApplicationInfo( + apiLevel23App = mContext.getPackageManager().getApplicationInfo( callingPackage, 0).targetSdkVersion >= Build.VERSION_CODES.M; } catch (PackageManager.NameNotFoundException e) { - // In case of exception, enforce permission anyway - } - if (enforceLocationPermission) { - throw new SecurityException("Need ACCESS_COARSE_LOCATION or " - + "ACCESS_FINE_LOCATION permission to get scan results"); + // In case of exception, assume app's API level is 23+ } // Pre-M apps running in the foreground should continue getting scan results - if (isForegroundApp(callingPackage)) { + if (!apiLevel23App && isForegroundApp(callingPackage)) { return true; } Log.e(TAG, "Permission denial: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION " @@ -2094,7 +2089,7 @@ public final class WifiServiceImpl extends IWifiManager.Stub { return false; } - private boolean isAppOppAllowed(int op, String callingPackage, int uid) { + private boolean checkAppOppAllowed(int op, String callingPackage, int uid) { return mAppOps.noteOp(op, uid, callingPackage) == AppOpsManager.MODE_ALLOWED; } |