summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFyodor Kupolov <fkupolov@google.com>2015-07-30 20:50:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-07-30 20:50:03 +0000
commitc6b1ed46dd5fe44da9fca8959f062e7bf6a7a800 (patch)
tree511a512720d98d3f04ac4a6c48c87dc78f44358e
parent84e718d76c7412121b64ed9ac497c8071f0ef5e9 (diff)
parent560c50dedb0a39f2804d300387a3fe6f8a96edbf (diff)
downloadwifi-c6b1ed46dd5fe44da9fca8959f062e7bf6a7a800.tar.gz
Merge "Use PEERS_MAC_ADDRESS permission instead of isSystemProcess" into mnc-dev
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index 5420ba83b..1b52a45fe 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -947,14 +947,15 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
enforceAccessPermission();
int userId = UserHandle.getCallingUserId();
int uid = Binder.getCallingUid();
- boolean isSystemProcess = (UserHandle.getAppId(uid) == android.os.Process.SYSTEM_UID);
+ boolean canReadPeerMacAddresses = checkPeersMacAddress();
boolean hasInteractUsersFull = checkInteractAcrossUsersFull();
long ident = Binder.clearCallingIdentity();
- if (!isSystemProcess && !isLocationEnabled()) {
- return new ArrayList<ScanResult>();
- }
try {
- if (!isSystemProcess && !checkCallerHasLocationPermission(callingPackage, uid)) {
+ if (!canReadPeerMacAddresses && !isLocationEnabled()) {
+ return new ArrayList<ScanResult>();
+ }
+ if (!canReadPeerMacAddresses
+ && !checkCallerHasLocationPermission(callingPackage, uid)) {
return new ArrayList<ScanResult>();
}
if (mAppOps.noteOp(AppOpsManager.OP_WIFI_SCAN, uid, callingPackage)
@@ -985,6 +986,14 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
}
/**
+ * Returns true if the caller holds PEERS_MAC_ADDRESS.
+ */
+ private boolean checkPeersMacAddress() {
+ return mContext.checkCallingOrSelfPermission(
+ android.Manifest.permission.PEERS_MAC_ADDRESS) == PackageManager.PERMISSION_GRANTED;
+ }
+
+ /**
* Returns true if the calling user is the current one or a profile of the
* current user..
*/