diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2017-05-15 14:20:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-15 14:20:29 -0400 |
commit | 602ceb18fdb30e0b5556e7a611005d03fd2ad055 (patch) | |
tree | e48ee83a9553a0345d1707cbc3732380c80a5d1d | |
parent | 22ed9b17a3d0ae1a2a4c63c9d52756f478067b77 (diff) | |
parent | 2520ea02b16338a22360b18f685c75b54998973a (diff) | |
download | sdl_core-602ceb18fdb30e0b5556e7a611005d03fd2ad055.tar.gz |
Merge pull request #1519 from okozlovlux/fix/SDL_shut_down_due_to_SIGSEGV
Fix issue when SDL shut down due to SIGSEGV
-rw-r--r-- | src/components/application_manager/src/commands/command_request_impl.cc | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc index ab0a17f1fb..bafad52563 100644 --- a/src/components/application_manager/src/commands/command_request_impl.cc +++ b/src/components/application_manager/src/commands/command_request_impl.cc @@ -493,60 +493,60 @@ bool CommandRequestImpl::CheckAllowedParameters() { return true; } - const ApplicationSet& accessor = - application_manager_.applications().GetData(); - ApplicationSetConstIt it_app_list = accessor.begin(); - ApplicationSetConstIt it_app_list_end = accessor.end(); - for (; it_app_list != it_app_list_end; ++it_app_list) { - if (connection_key() == (*it_app_list).get()->app_id()) { - RPCParams params; - - const smart_objects::SmartObject& s_map = - (*message_)[strings::msg_params]; - if (smart_objects::SmartType_Map == s_map.getType()) { - smart_objects::SmartMap::iterator iter = s_map.map_begin(); - smart_objects::SmartMap::iterator iter_end = s_map.map_end(); - - for (; iter != iter_end; ++iter) { - if (true == iter->second.asBool()) { - LOG4CXX_DEBUG(logger_, "Request's param: " << iter->first); - params.insert(iter->first); - } - } - } - - mobile_apis::Result::eType check_result = - application_manager_.CheckPolicyPermissions( - (*it_app_list).get()->policy_app_id(), - (*it_app_list).get()->hmi_level(), - static_cast<mobile_api::FunctionID::eType>(function_id()), - params, - ¶meters_permissions_); - - // Check, if RPC is allowed by policy - if (mobile_apis::Result::SUCCESS != check_result) { - smart_objects::SmartObjectSPtr response = - MessageHelper::CreateBlockedByPoliciesResponse( - static_cast<mobile_api::FunctionID::eType>(function_id()), - check_result, - correlation_id(), - (*it_app_list)->app_id()); - - application_manager_.SendMessageToMobile(response); - return false; - } - - // If no parameters specified in policy table, no restriction will be - // applied for parameters - if (parameters_permissions_.allowed_params.empty() && - parameters_permissions_.disallowed_params.empty() && - parameters_permissions_.undefined_params.empty()) { - return true; - } - - RemoveDisallowedParameters(); + const ApplicationConstSharedPtr app = + application_manager_.application(connection_key()); + if (!app) { + LOG4CXX_ERROR(logger_, + "There is no registered application with " + "connection key '" + << connection_key() << "'"); + return false; + } + + RPCParams params; + + const smart_objects::SmartObject& s_map = (*message_)[strings::msg_params]; + smart_objects::SmartMap::const_iterator iter = s_map.map_begin(); + smart_objects::SmartMap::const_iterator iter_end = s_map.map_end(); + + for (; iter != iter_end; ++iter) { + if (iter->second.asBool()) { + LOG4CXX_DEBUG(logger_, "Request's param: " << iter->first); + params.insert(iter->first); } } + + mobile_apis::Result::eType check_result = + application_manager_.CheckPolicyPermissions( + app->policy_app_id(), + app->hmi_level(), + static_cast<mobile_api::FunctionID::eType>(function_id()), + params, + ¶meters_permissions_); + + // Check, if RPC is allowed by policy + if (mobile_apis::Result::SUCCESS != check_result) { + smart_objects::SmartObjectSPtr response = + MessageHelper::CreateBlockedByPoliciesResponse( + static_cast<mobile_api::FunctionID::eType>(function_id()), + check_result, + correlation_id(), + app->app_id()); + + application_manager_.SendMessageToMobile(response); + return false; + } + + // If no parameters specified in policy table, no restriction will be + // applied for parameters + if (parameters_permissions_.allowed_params.empty() && + parameters_permissions_.disallowed_params.empty() && + parameters_permissions_.undefined_params.empty()) { + return true; + } + + RemoveDisallowedParameters(); + return true; } |