diff options
author | Alex Kutsan <akutsan@luxoft.com> | 2018-03-23 00:49:04 +0200 |
---|---|---|
committer | Alexander <akutsan@luxoft.com> | 2018-03-23 14:49:43 +0000 |
commit | 765d6207a9f7bed8bf6ffccb6cf640f6bd0b2f63 (patch) | |
tree | f15316fd5dcef5ee9c00f5684088e31e89401233 | |
parent | 955add02d3cc5f54d2971f2c7b7d286d02e21dd7 (diff) | |
download | sdl_core-765d6207a9f7bed8bf6ffccb6cf640f6bd0b2f63.tar.gz |
Avoid integer overflow
Replaced all usaged of device handle with apropriate typedef
Assignment device handle to uint32_t leads to integer overflow
11 files changed, 26 insertions, 19 deletions
diff --git a/src/components/application_manager/include/application_manager/message_helper.h b/src/components/application_manager/include/application_manager/message_helper.h index dc16e14023..fc84538dae 100644 --- a/src/components/application_manager/include/application_manager/message_helper.h +++ b/src/components/application_manager/include/application_manager/message_helper.h @@ -46,6 +46,7 @@ #include "protocol_handler/session_observer.h" #include "application_manager/policies/policy_handler_interface.h" #include "smart_objects/smart_object.h" +#include "transport_manager/common.h" namespace policy { class PolicyHandlerInterface; @@ -137,7 +138,8 @@ class MessageHelper { mobile_apis::Result::eType mobile_result); static std::string GetDeviceMacAddressForHandle( - const uint32_t device_handle, const ApplicationManager& app_mngr); + const transport_manager::DeviceHandle device_handle, + const ApplicationManager& app_mngr); /** * @brief Converts string to mobile Result enum value * @param mobile_result stringified value diff --git a/src/components/application_manager/include/application_manager/policies/policy_handler.h b/src/components/application_manager/include/application_manager/policies/policy_handler.h index ce5c0818f1..b4653c6cb2 100644 --- a/src/components/application_manager/include/application_manager/policies/policy_handler.h +++ b/src/components/application_manager/include/application_manager/policies/policy_handler.h @@ -67,7 +67,7 @@ class ApplicationManager; namespace policy { typedef std::vector<uint32_t> AppIds; -typedef std::vector<uint32_t> DeviceHandles; +typedef std::vector<transport_manager::DeviceHandle> DeviceHandles; namespace custom_str = utils::custom_string; class PolicyHandler : public PolicyHandlerInterface, diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 22a0f2628e..ac21219d7d 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -46,6 +46,7 @@ #include "utils/timer_task_impl.h" #include "application_manager/policies/policy_handler_interface.h" #include "application_manager/resumption/resume_ctrl.h" +#include "transport_manager/common.h" namespace { @@ -81,6 +82,7 @@ void SwitchApplicationParameters(ApplicationSharedPtr app, const uint32_t app_id, const size_t device_id, const std::string& mac_address) { + LOG4CXX_AUTO_TRACE(logger_); utils::SharedPtr<ApplicationImpl> application = ApplicationSharedPtr::dynamic_pointer_cast<ApplicationImpl>(app); DCHECK_OR_RETURN_VOID(application); diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc index cd1dead88a..306e9782f5 100644 --- a/src/components/application_manager/src/message_helper/message_helper.cc +++ b/src/components/application_manager/src/message_helper/message_helper.cc @@ -51,6 +51,7 @@ #include "application_manager/policies/policy_handler_interface.h" #include "application_manager/resumption/resume_ctrl.h" #include "connection_handler/connection_handler_impl.h" +#include "transport_manager/common.h" #include "interfaces/MOBILE_API.h" #include "smart_objects/enum_schema_item.h" #include "utils/file_system.h" @@ -292,7 +293,8 @@ hmi_apis::Common_Language::eType MessageHelper::CommonLanguageFromString( } std::string MessageHelper::GetDeviceMacAddressForHandle( - const uint32_t device_handle, const ApplicationManager& app_mngr) { + const transport_manager::DeviceHandle device_handle, + const ApplicationManager& app_mngr) { std::string device_mac_address = ""; app_mngr.connection_handler().get_session_observer().GetDataOnDeviceID( device_handle, NULL, NULL, &device_mac_address); diff --git a/src/components/application_manager/src/policies/policy_handler.cc b/src/components/application_manager/src/policies/policy_handler.cc index b6b208b39b..bbf391a9f1 100644 --- a/src/components/application_manager/src/policies/policy_handler.cc +++ b/src/components/application_manager/src/policies/policy_handler.cc @@ -103,7 +103,7 @@ const std::string RequestTypeToString(mobile_apis::RequestType::eType type) { const policy::DeviceParams GetDeviceParams( connection_handler::DeviceHandle device_handle, const protocol_handler::SessionObserver& session_observer) { - CREATE_LOGGERPTR_LOCAL(logger_, "PolicyHandler") + CREATE_LOGGERPTR_LOCAL(logger_, "PolicyHandler"); policy::DeviceParams device_params; if (-1 == session_observer.GetDataOnDeviceID( @@ -1223,6 +1223,7 @@ void PolicyHandler::OnAllowSDLFunctionalityNotification( device_handle); // If consent done from HMI menu if (it == pending_device_handles_.end()) { + LOG4CXX_WARN(logger_, "No pendining application activation"); return; } diff --git a/src/components/application_manager/test/include/application_manager/mock_message_helper.h b/src/components/application_manager/test/include/application_manager/mock_message_helper.h index 7598e33e19..93db0d9795 100644 --- a/src/components/application_manager/test/include/application_manager/mock_message_helper.h +++ b/src/components/application_manager/test/include/application_manager/mock_message_helper.h @@ -40,6 +40,7 @@ #include "application_manager/policies/policy_handler_interface.h" #include "application_manager/application_manager.h" #include "smart_objects/smart_object.h" +#include "transport_manager/common.h" namespace application_manager { @@ -266,7 +267,7 @@ class MockMessageHelper { MOCK_METHOD1(StringifiedHMILevel, std::string(const mobile_apis::HMILevel::eType hmi_level)); MOCK_METHOD2(GetDeviceMacAddressForHandle, - std::string(const uint32_t device_handle, + std::string(const transport_manager::DeviceHandle device_handle, const ApplicationManager& app_mngr)); MOCK_METHOD3(SendDeleteCommandRequest, void(smart_objects::SmartObject* cmd, diff --git a/src/components/application_manager/test/mock_message_helper.cc b/src/components/application_manager/test/mock_message_helper.cc index 2a74f5b3b1..24bba63e71 100644 --- a/src/components/application_manager/test/mock_message_helper.cc +++ b/src/components/application_manager/test/mock_message_helper.cc @@ -33,6 +33,7 @@ #include "application_manager/message_helper.h" #include "application_manager/mock_message_helper.h" #include "application_manager/policies/policy_handler_interface.h" +#include "transport_manager/common.h" #include "gtest/gtest.h" #include "gmock/gmock.h" @@ -496,7 +497,8 @@ std::string MessageHelper::StringifiedHMILevel( } std::string MessageHelper::GetDeviceMacAddressForHandle( - const uint32_t device_handle, const ApplicationManager& app_mngr) { + const transport_manager::DeviceHandle device_handle, + const ApplicationManager& app_mngr) { return MockMessageHelper::message_helper_mock()->GetDeviceMacAddressForHandle( device_handle, app_mngr); } diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc index 7ea9efa1cc..a0585b0bf4 100644 --- a/src/components/connection_handler/src/connection_handler_impl.cc +++ b/src/components/connection_handler/src/connection_handler_impl.cc @@ -753,12 +753,11 @@ struct CompareMAC { bool ConnectionHandlerImpl::GetDeviceID(const std::string& mac_address, DeviceHandle* device_handle) { + DCHECK_OR_RETURN(device_handle, false); DeviceMap::const_iterator it = std::find_if( device_list_.begin(), device_list_.end(), CompareMAC(mac_address)); if (it != device_list_.end()) { - if (device_handle) { - *device_handle = it->first; - } + *device_handle = it->first; return true; } return false; @@ -775,7 +774,7 @@ int32_t ConnectionHandlerImpl::GetDataOnDeviceID( int32_t result = -1; DeviceMap::const_iterator it = device_list_.find(device_handle); if (device_list_.end() == it) { - LOG4CXX_ERROR(logger_, "Device not found!"); + LOG4CXX_ERROR(logger_, "Device not found for handle " << device_handle); return result; } diff --git a/src/components/include/test/protocol_handler/mock_session_observer.h b/src/components/include/test/protocol_handler/mock_session_observer.h index 3d54b97fad..2cfe66200c 100644 --- a/src/components/include/test/protocol_handler/mock_session_observer.h +++ b/src/components/include/test/protocol_handler/mock_session_observer.h @@ -37,6 +37,7 @@ #include <string> #include <list> #include "protocol_handler/session_observer.h" +#include "transport_manager/common.h" namespace test { namespace components { @@ -101,13 +102,6 @@ class MockSessionObserver : public ::protocol_handler::SessionObserver { std::string* mac_address, std::string* connection_type)); - DEPRECATED MOCK_CONST_METHOD5(GetDataOnDeviceID, - int32_t(uint32_t device_handle, - std::string* device_name, - std::list<uint32_t>* applications_list, - std::string* mac_address, - std::string* connection_type)); - MOCK_CONST_METHOD2(IsHeartBeatSupported, bool(transport_manager::ConnectionUID connection_handle, uint8_t session_id)); diff --git a/src/components/policy/policy_external/include/policy/policy_types.h b/src/components/policy/policy_external/include/policy/policy_types.h index f57919b6f7..232191cfea 100644 --- a/src/components/policy/policy_external/include/policy/policy_types.h +++ b/src/components/policy/policy_external/include/policy/policy_types.h @@ -41,6 +41,8 @@ #include <utility> #include "utils/shared_ptr.h" #include "utils/helpers.h" +#include "transport_manager/common.h" + namespace policy { // TODO(PV): specify errors @@ -190,7 +192,7 @@ struct DeviceParams { std::string device_name; std::string device_mac_address; std::string device_connection_type; - uint32_t device_handle; + transport_manager::DeviceHandle device_handle; }; /** diff --git a/src/components/policy/policy_regular/include/policy/policy_types.h b/src/components/policy/policy_regular/include/policy/policy_types.h index 25aa126a03..af1d119e7a 100644 --- a/src/components/policy/policy_regular/include/policy/policy_types.h +++ b/src/components/policy/policy_regular/include/policy/policy_types.h @@ -41,6 +41,8 @@ #include <utility> #include "utils/shared_ptr.h" #include "utils/helpers.h" +#include "transport_manager/common.h" + namespace policy { // TODO(PV): specify errors @@ -190,7 +192,7 @@ struct DeviceParams { std::string device_name; std::string device_mac_address; std::string device_connection_type; - uint32_t device_handle; + transport_manager::DeviceHandle device_handle; }; /** |