diff options
author | xinhe <xinhe@google.com> | 2015-04-24 22:18:33 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2015-04-24 22:18:35 +0000 |
commit | 624b4e283031091716075e5b6fcdab0547fef83a (patch) | |
tree | 3c82be944f8ffefc26e50e7b479ddd362b979aa5 /service | |
parent | d57f630f6a7a5fca872d2b96fc4cce1905daee5d (diff) | |
parent | b11bfe8318f52585b7fc65cbbe8890aa562eb525 (diff) | |
download | android_frameworks_opt_net_wifi-624b4e283031091716075e5b6fcdab0547fef83a.tar.gz android_frameworks_opt_net_wifi-624b4e283031091716075e5b6fcdab0547fef83a.tar.bz2 android_frameworks_opt_net_wifi-624b4e283031091716075e5b6fcdab0547fef83a.zip |
Merge "No Permission check for WiFi RTT" into m-wireless-dev
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/RttService.java | 58 |
1 files changed, 45 insertions, 13 deletions
diff --git a/service/java/com/android/server/wifi/RttService.java b/service/java/com/android/server/wifi/RttService.java index b9850232f..bf7316986 100644 --- a/service/java/com/android/server/wifi/RttService.java +++ b/service/java/com/android/server/wifi/RttService.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; +import android.Manifest; class RttService extends SystemService { @@ -283,20 +284,32 @@ class RttService extends SystemService { transitionTo(mRequestPendingState); break; case RttManager.CMD_OP_START_RANGING: { - RttManager.ParcelableRttParams params = - (RttManager.ParcelableRttParams)msg.obj; - if (params == null) { - replyFailed(msg, - RttManager.REASON_INVALID_REQUEST, "No params"); - } else if (ci.addRttRequest(msg.arg2, params) == false) { - replyFailed(msg, - RttManager.REASON_INVALID_REQUEST, "Unspecified"); - } else { - sendMessage(CMD_ISSUE_NEXT_REQUEST); - } + //check permission + if(DBG) Log.d(TAG, "UID is: " + msg.sendingUid); + if (!enforcePermissionCheck(msg)) { + Log.e(TAG, "UID: " + msg.sendingUid + " has no" + + " LOCATION_HARDWARE Permission"); + break; + } + + RttManager.ParcelableRttParams params = + (RttManager.ParcelableRttParams)msg.obj; + if (params == null) { + replyFailed(msg, + RttManager.REASON_INVALID_REQUEST, "No params"); + } else if (ci.addRttRequest(msg.arg2, params) == false) { + replyFailed(msg, + RttManager.REASON_INVALID_REQUEST, "Unspecified"); + } else { + sendMessage(CMD_ISSUE_NEXT_REQUEST); } + } break; case RttManager.CMD_OP_STOP_RANGING: + if(!enforcePermissionCheck(msg)) { + break; + } + for (Iterator<RttRequest> it = mRequestQueue.iterator(); it.hasNext(); ) { RttRequest request = it.next(); @@ -337,9 +350,11 @@ class RttService extends SystemService { transitionTo(mEnabledState); } if(mOutstandingRequest != null) { - if (DBG) Log.d(TAG, "new mOutstandingRequest.key is: " + mOutstandingRequest.key); + if (DBG) Log.d(TAG, "new mOutstandingRequest.key is: " + + mOutstandingRequest.key); } else { - if (DBG) Log.d(TAG, "CMD_ISSUE_NEXT_REQUEST: mOutstandingRequest =null "); + if (DBG) Log.d(TAG, + "CMD_ISSUE_NEXT_REQUEST: mOutstandingRequest =null "); } } else { /* just wait; we'll issue next request after @@ -357,6 +372,12 @@ class RttService extends SystemService { sendMessage(CMD_ISSUE_NEXT_REQUEST); break; case RttManager.CMD_OP_STOP_RANGING: + if(!enforcePermissionCheck(msg)) { + Log.e(TAG, "UID: " + msg.sendingUid + " has no " + + "LOCATION_HARDWARE Permission"); + break; + } + if (mOutstandingRequest != null && msg.arg2 == mOutstandingRequest.key) { if (DBG) Log.d(TAG, "Cancelling ongoing RTT of: " + msg.arg2); @@ -410,6 +431,17 @@ class RttService extends SystemService { } } + boolean enforcePermissionCheck(Message msg) { + try { + mContext.enforcePermission(Manifest.permission.LOCATION_HARDWARE, + -1, msg.sendingUid, "LocationRTT"); + } catch (SecurityException e) { + replyFailed(msg,RttManager.REASON_PERMISSION_DENIED, "No params"); + return false; + } + return true; + } + private WifiNative.RttEventHandler mEventHandler = new WifiNative.RttEventHandler() { @Override public void onRttResults(RttManager.RttResult[] result) { |