summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Kutsan <akutsan@luxoft.com>2018-03-23 00:49:04 +0200
committerAlexander <akutsan@luxoft.com>2018-03-23 14:49:43 +0000
commit765d6207a9f7bed8bf6ffccb6cf640f6bd0b2f63 (patch)
treef15316fd5dcef5ee9c00f5684088e31e89401233
parent955add02d3cc5f54d2971f2c7b7d286d02e21dd7 (diff)
downloadsdl_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
-rw-r--r--src/components/application_manager/include/application_manager/message_helper.h4
-rw-r--r--src/components/application_manager/include/application_manager/policies/policy_handler.h2
-rw-r--r--src/components/application_manager/src/application_impl.cc2
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc4
-rw-r--r--src/components/application_manager/src/policies/policy_handler.cc3
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_message_helper.h3
-rw-r--r--src/components/application_manager/test/mock_message_helper.cc4
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc7
-rw-r--r--src/components/include/test/protocol_handler/mock_session_observer.h8
-rw-r--r--src/components/policy/policy_external/include/policy/policy_types.h4
-rw-r--r--src/components/policy/policy_regular/include/policy/policy_types.h4
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;
};
/**