diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-11-22 08:30:59 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-11-22 08:30:59 -0800 |
commit | 025d800df0efcd0881c43cde7a8cb7267e774f25 (patch) | |
tree | 5f0e23f98d88b314fc13282d1e1d4703926fcb88 | |
parent | 0e81e05ed483978990ce025297eb771eb30a0838 (diff) | |
parent | 7f2df1893c4ff15b16faa1611bfc1879b180092e (diff) | |
download | android_packages_apps_Bluetooth-025d800df0efcd0881c43cde7a8cb7267e774f25.tar.gz android_packages_apps_Bluetooth-025d800df0efcd0881c43cde7a8cb7267e774f25.tar.bz2 android_packages_apps_Bluetooth-025d800df0efcd0881c43cde7a8cb7267e774f25.zip |
Merge "Bluetooth App: Fix to resolve Klocwork issues in Bluetooth App"
4 files changed, 42 insertions, 8 deletions
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java index 8a303fc0e..524d16a74 100755 --- a/src/com/android/bluetooth/btservice/AdapterService.java +++ b/src/com/android/bluetooth/btservice/AdapterService.java @@ -1595,9 +1595,9 @@ public class AdapterService extends Service { void setProfileAutoConnectionPriority (BluetoothDevice device, int profileId){ if (profileId == BluetoothProfile.HEADSET) { HeadsetService hsService = HeadsetService.getHeadsetService(); - List<BluetoothDevice> deviceList = hsService.getConnectedDevices(); if ((hsService != null) && (BluetoothProfile.PRIORITY_AUTO_CONNECT != hsService.getPriority(device))){ + List<BluetoothDevice> deviceList = hsService.getConnectedDevices(); adjustOtherHeadsetPriorities(hsService, deviceList); hsService.setPriority(device,BluetoothProfile.PRIORITY_AUTO_CONNECT); } diff --git a/src/com/android/bluetooth/btservice/BondStateMachine.java b/src/com/android/bluetooth/btservice/BondStateMachine.java index 3b82b18b2..68590e7b6 100644 --- a/src/com/android/bluetooth/btservice/BondStateMachine.java +++ b/src/com/android/bluetooth/btservice/BondStateMachine.java @@ -229,11 +229,21 @@ final class BondStateMachine extends StateMachine { case SSP_REQUEST: int passkey = msg.arg1; int variant = msg.arg2; + if(devProp == null) + { + Log.e(TAG,"Received msg from an unknown device"); + return false; + } sendDisplayPinIntent(devProp.getAddress(), passkey, variant); break; case PIN_REQUEST: BluetoothClass btClass = dev.getBluetoothClass(); int btDeviceClass = btClass.getDeviceClass(); + if(devProp == null) + { + Log.e(TAG,"Received msg from an unknown device"); + return false; + } if (btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD || btDeviceClass == BluetoothClass.Device.PERIPHERAL_KEYBOARD_POINTING) { // Its a keyboard. Follow the HID spec recommendation of creating the diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java index b6c94890e..7ec817054 100644 --- a/src/com/android/bluetooth/btservice/RemoteDevices.java +++ b/src/com/android/bluetooth/btservice/RemoteDevices.java @@ -351,7 +351,7 @@ final class RemoteDevices { device = getDeviceProperties(bdDevice); } - for (int j = 0; j < types.length; j++) { + for (int j = 0; j < types.length && device != null; j++) { type = types[j]; val = values[j]; if(val.length <= 0) diff --git a/src/com/android/bluetooth/hdp/HealthService.java b/src/com/android/bluetooth/hdp/HealthService.java index 21846c677..01e3f4121 100644 --- a/src/com/android/bluetooth/hdp/HealthService.java +++ b/src/com/android/bluetooth/hdp/HealthService.java @@ -189,7 +189,12 @@ public class HealthService extends ProfileService { { BluetoothHealthAppConfiguration appConfig = (BluetoothHealthAppConfiguration) msg.obj; - int appId = (mApps.get(appConfig)).mAppId; + AppInfo appInfo = mApps.get(appConfig); + if (appInfo == null) { + Log.e(TAG, "No AppInfo found for AppConfig: " + appConfig); + break; + } + int appId = appInfo.mAppId; if (!unregisterHealthAppNative(appId)) { Log.e(TAG, "Failed to unregister application: id: " + appId); callStatusCallback(appConfig, @@ -201,7 +206,12 @@ public class HealthService extends ProfileService { { HealthChannel chan = (HealthChannel) msg.obj; byte[] devAddr = Utils.getByteAddress(chan.mDevice); - int appId = (mApps.get(chan.mConfig)).mAppId; + AppInfo appInfo = mApps.get(chan.mConfig); + if (appInfo == null) { + Log.e(TAG, "No AppInfo found for AppConfig: " + chan.mConfig); + break; + } + int appId = appInfo.mAppId; chan.mChannelId = connectChannelNative(devAddr, appId); if (chan.mChannelId == -1) { callHealthChannelCallback(chan.mConfig, chan.mDevice, @@ -241,6 +251,10 @@ public class HealthService extends ProfileService { regStatus == BluetoothHealth.APP_CONFIG_UNREGISTRATION_SUCCESS) { //unlink to death once app is unregistered AppInfo appInfo = mApps.get(appConfig); + if (appInfo == null){ + Log.e(TAG, "No AppInfo found for AppConfig " + appConfig); + break; + } appInfo.cleanup(); mApps.remove(appConfig); } @@ -254,7 +268,7 @@ public class HealthService extends ProfileService { findAppConfigByAppId(channelStateEvent.mAppId); int newState; newState = convertHalChannelState(channelStateEvent.mState); - if (newState == BluetoothHealth.STATE_CHANNEL_DISCONNECTED && + if (newState == BluetoothHealth.STATE_CHANNEL_DISCONNECTED || appConfig == null) { Log.e(TAG,"Disconnected for non existing app"); break; @@ -512,9 +526,15 @@ public class HealthService extends ProfileService { private void callStatusCallback(BluetoothHealthAppConfiguration config, int status) { if (VDBG) log ("Health Device Application: " + config + " State Change: status:" + status); - IBluetoothHealthCallback callback = (mApps.get(config)).mCallback; + AppInfo appInfo = mApps.get(config); + if (appInfo == null) { + Log.e(TAG, " No AppInfo found for AppConfig " + config); + return; + } + IBluetoothHealthCallback callback = appInfo.mCallback; if (callback == null) { Log.e(TAG, "Callback object null"); + return; } try { @@ -604,8 +624,12 @@ public class HealthService extends ProfileService { Log.e(TAG, "Exception while duping: " + e); } } - - IBluetoothHealthCallback callback = (mApps.get(config)).mCallback; + AppInfo appInfo = mApps.get(config); + if (appInfo == null) { + Log.e(TAG, "No AppInfo found for AppConfig " + config); + return; + } + IBluetoothHealthCallback callback = appInfo.mCallback; if (callback == null) { Log.e(TAG, "No callback found for config: " + config); return; |