From ce0de48cc16b14cd05bdb1e758f427cf02a138dd Mon Sep 17 00:00:00 2001 From: Pawel Wasowski Date: Wed, 19 May 2021 11:56:25 +0200 Subject: [PATCH] [Bluetooth] Fix Coverity issue Coverity issue numbers: 1227417 1227505 1229055 [Verification] Code compiles Change-Id: Ie05e4184cf200b69615b2e4ba92d3d5cb291d4d0 Signed-off-by: Pawel Wasowski --- src/bluetooth/bluetooth_adapter.cc | 65 +++++++++++++++++++----------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/src/bluetooth/bluetooth_adapter.cc b/src/bluetooth/bluetooth_adapter.cc index 17ad6c91..82c11180 100644 --- a/src/bluetooth/bluetooth_adapter.cc +++ b/src/bluetooth/bluetooth_adapter.cc @@ -73,7 +73,7 @@ const std::string kAdapterDiscoverErrorEvent = "BluetoothDiscoverDevicesErrorCal // device const std::string kDeviceAddress = "address"; const unsigned short kTimeout = 180; -} +} // namespace static bool IsValidAddress(const std::string& address) { ScopeLogger(); @@ -858,9 +858,15 @@ void BluetoothAdapter::DiscoverDevices(const picojson::value& /* data */, picojs LogAndCreateResult(ErrorCode::SERVICE_NOT_AVAILABLE_ERR, "Bluetooth device is turned off"); } + if (result.IsSuccess()) { + auto ret = bt_adapter_start_device_discovery(); + if (BT_ERROR_NONE != ret) { + result = LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "An unknown error occurred"); + } + } + if (result.IsSuccess()) { this->user_request_list_[DISCOVER_DEVICES] = true; - bt_adapter_start_device_discovery(); } else { std::shared_ptr response = std::shared_ptr(new picojson::value(picojson::object())); @@ -1169,28 +1175,38 @@ void BluetoothAdapter::CreateBonding(const picojson::value& data, picojson::obje }; BondingHandler* handler = new BondingHandler(instance_, callback_handle, address); - bt_device_set_bond_created_cb(bond_create_callback, handler); - int ret = bt_device_create_bond(address.c_str()); + int ret = bt_device_set_bond_created_cb(bond_create_callback, handler); + if (BT_ERROR_NONE != ret) { + delete handler; + // We ignore other error types that can be in ret, because they are highly improbable + result = LogAndCreateResult( + ErrorCode::UNKNOWN_ERR, "Unknown error", + ("bt_device_set_bond_created_cb error: %d (%s)", ret, get_error_message(ret))); + } else { + LoggerD("bt_device_set_bond_created_cb() succeeded"); - switch (ret) { - case BT_ERROR_NONE: { - LoggerD("bt_device_create_bond() succeeded"); - break; - } - case BT_ERROR_INVALID_PARAMETER: { - bt_device_unset_bond_created_cb(); - delete handler; - result = LogAndCreateResult( - ErrorCode::INVALID_VALUES_ERR, "Invalid value", - ("bt_device_create_bond error: %d (%s)", ret, get_error_message(ret))); - break; - } - default: { - bt_device_unset_bond_created_cb(); - delete handler; - result = LogAndCreateResult( - ErrorCode::UNKNOWN_ERR, "Unknown exception", - ("bt_device_create_bond error: %d (%s)", ret, get_error_message(ret))); + ret = bt_device_create_bond(address.c_str()); + + switch (ret) { + case BT_ERROR_NONE: { + LoggerD("bt_device_create_bond() succeeded"); + break; + } + case BT_ERROR_INVALID_PARAMETER: { + bt_device_unset_bond_created_cb(); + delete handler; + result = LogAndCreateResult( + ErrorCode::INVALID_VALUES_ERR, "Invalid value", + ("bt_device_create_bond error: %d (%s)", ret, get_error_message(ret))); + break; + } + default: { + bt_device_unset_bond_created_cb(); + delete handler; + result = LogAndCreateResult( + ErrorCode::UNKNOWN_ERR, "Unknown error", + ("bt_device_create_bond error: %d (%s)", ret, get_error_message(ret))); + } } } } else if (result.IsSuccess()) { @@ -1607,10 +1623,11 @@ void BluetoothAdapter::OnSocketConnected(int result, bt_socket_connection_state_ &response->get()); } + const auto request_callback_handle = request->second->callback_handle_; // request will be handled, can be safely removed object->connection_requests_.erase(request); - object->instance_.SyncResponse(request->second->callback_handle_, response); + object->instance_.SyncResponse(request_callback_handle, response); } else { // disconnected when Client if (result == BT_ERROR_NONE) { object->RemoveSocket(connection->socket_fd); -- 2.34.1