diff options
5 files changed, 14 insertions, 15 deletions
diff --git a/src/components/application_manager/include/application_manager/rpc_handler_impl.h b/src/components/application_manager/include/application_manager/rpc_handler_impl.h index 0f2cb46cae..e1dc9e6c5d 100644 --- a/src/components/application_manager/include/application_manager/rpc_handler_impl.h +++ b/src/components/application_manager/include/application_manager/rpc_handler_impl.h @@ -154,7 +154,7 @@ class RPCHandlerImpl : public RPCHandler, ns_smart_device_link::ns_smart_objects::SmartObject& output, utils::SemanticVersion& message_version); - bool ValidateRpcSO(smart_objects::SmartObject* message, + bool ValidateRpcSO(smart_objects::SmartObject& message, utils::SemanticVersion& msg_version, rpc::ValidationReport& report_out, bool allow_unknown_parameters) OVERRIDE; diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 581551c3ac..701bb339a1 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -2294,7 +2294,7 @@ bool ApplicationManagerImpl::ConvertSOtoMessage( case 0: { if (protocol_version == 1) { if (!formatters::CFormatterJsonSDLRPCv1::toString( - message, output_string, remove_unknown_parameters)) { + message, output_string, !allow_unknown_parameters)) { LOG4CXX_WARN(logger_, "Failed to serialize smart object"); return false; } @@ -2302,7 +2302,7 @@ bool ApplicationManagerImpl::ConvertSOtoMessage( protocol_handler::MajorProtocolVersion::PROTOCOL_VERSION_1); } else { if (!formatters::CFormatterJsonSDLRPCv2::toString( - message, output_string, remove_unknown_parameters)) { + message, output_string, !allow_unknown_parameters)) { LOG4CXX_WARN(logger_, "Failed to serialize smart object"); return false; } @@ -2315,7 +2315,7 @@ bool ApplicationManagerImpl::ConvertSOtoMessage( } case 1: { if (!formatters::FormatterJsonRpc::ToString( - message, output_string, remove_unknown_parameters)) { + message, output_string, !allow_unknown_parameters)) { LOG4CXX_WARN(logger_, "Failed to serialize smart object"); return false; } diff --git a/src/components/application_manager/src/rpc_handler_impl.cc b/src/components/application_manager/src/rpc_handler_impl.cc index 9063728d66..2574da5fb5 100644 --- a/src/components/application_manager/src/rpc_handler_impl.cc +++ b/src/components/application_manager/src/rpc_handler_impl.cc @@ -304,7 +304,6 @@ bool RPCHandlerImpl::ConvertMessageToSO( message.type(), message.correlation_id()); - smart_objects::SmartObject* so_ptr = (conversion_result) ? &output : NULL; rpc::ValidationReport report("RPC"); // Attach RPC version to SmartObject if it does not exist yet. @@ -318,9 +317,10 @@ bool RPCHandlerImpl::ConvertMessageToSO( GetMessageVersion(output, msg_version); } - if (validate_params && - !ValidateRpcSO( - so_ptr, msg_version, report, allow_unknown_parameters))) { + if (!conversion_result || + (validate_params && + !ValidateRpcSO( + output, msg_version, report, allow_unknown_parameters))) { LOG4CXX_WARN(logger_, "Failed to parse string to smart object with API version " << msg_version.toString() << " : " @@ -453,14 +453,13 @@ bool RPCHandlerImpl::ConvertMessageToSO( return true; } -bool RPCHandlerImpl::ValidateRpcSO(smart_objects::SmartObject* message, +bool RPCHandlerImpl::ValidateRpcSO(smart_objects::SmartObject& message, utils::SemanticVersion& msg_version, rpc::ValidationReport& report_out, bool allow_unknown_parameters) { - if (!message || - !mobile_so_factory().attachSchema( - *message, !allow_unknown_parameters, msg_version) || - message->validate(&report_out, msg_version, allow_unknown_parameters) != + if (!mobile_so_factory().attachSchema( + message, !allow_unknown_parameters, msg_version) || + message.validate(&report_out, msg_version, allow_unknown_parameters) != smart_objects::errors::OK) { LOG4CXX_WARN(logger_, "Failed to parse string to smart object"); return false; diff --git a/src/components/application_manager/src/rpc_passing_handler.cc b/src/components/application_manager/src/rpc_passing_handler.cc index f3db361de3..8d93659a27 100644 --- a/src/components/application_manager/src/rpc_passing_handler.cc +++ b/src/components/application_manager/src/rpc_passing_handler.cc @@ -246,7 +246,7 @@ void RPCPassingHandler::ForwardRequestToCore(uint32_t correlation_id) { } if (!app_manager_.GetRPCHandler().ValidateRpcSO( - &message, msg_version, report, false)) { + message, msg_version, report, false)) { std::shared_ptr<smart_objects::SmartObject> response( MessageHelper::CreateNegativeResponse( connection_key, diff --git a/src/components/include/application_manager/rpc_handler.h b/src/components/include/application_manager/rpc_handler.h index 3652c77342..2ada9e7901 100644 --- a/src/components/include/application_manager/rpc_handler.h +++ b/src/components/include/application_manager/rpc_handler.h @@ -52,7 +52,7 @@ class RPCHandler #endif // TELEMETRY_MONITOR { public: - virtual bool ValidateRpcSO(smart_objects::SmartObject* message, + virtual bool ValidateRpcSO(smart_objects::SmartObject& message, utils::SemanticVersion& msg_version, rpc::ValidationReport& report_out, bool allow_unknown_parameters) = 0; |