diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2015-07-30 20:50:03 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-30 20:50:03 +0000 |
commit | c6b1ed46dd5fe44da9fca8959f062e7bf6a7a800 (patch) | |
tree | 511a512720d98d3f04ac4a6c48c87dc78f44358e | |
parent | 84e718d76c7412121b64ed9ac497c8071f0ef5e9 (diff) | |
parent | 560c50dedb0a39f2804d300387a3fe6f8a96edbf (diff) | |
download | wifi-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.java | 19 |
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.. */ |