diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2022-02-04 10:13:10 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-04 10:13:10 -0500 |
commit | 2f002290411cae9a414c4dfccc93bb777a9482d0 (patch) | |
tree | 14983ee34cfb1ef0455557722467cbcf75d7ddb2 /src | |
parent | eebd1a9cfc6a25bb0a9618cd34ddf57751b14d53 (diff) | |
download | sdl_core-2f002290411cae9a414c4dfccc93bb777a9482d0.tar.gz |
Check that message code exists before accessing (#3852)
An empty entry in the messages table would be created if the key being searched for didn't exist. This adds a check before accessing this data so that an entry isn't created accidentally
Diffstat (limited to 'src')
-rw-r--r-- | src/components/policy/policy_external/src/cache_manager.cc | 9 | ||||
-rw-r--r-- | src/components/policy/policy_regular/src/cache_manager.cc | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/components/policy/policy_external/src/cache_manager.cc b/src/components/policy/policy_external/src/cache_manager.cc index 07f2df1991..d5e1e61966 100644 --- a/src/components/policy/policy_external/src/cache_manager.cc +++ b/src/components/policy/policy_external/src/cache_manager.cc @@ -1695,8 +1695,13 @@ std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg( std::vector<std::string>::const_iterator it_end = msg_codes.end(); sync_primitives::AutoLock auto_lock(cache_lock_); for (; it != it_end; ++it) { - policy_table::MessageLanguages msg_languages = - (*pt_->policy_table.consumer_friendly_messages->messages)[*it]; + auto messages = pt_->policy_table.consumer_friendly_messages->messages; + auto messages_it = messages->find(*it); + if (messages->end() == messages_it) { + SDL_LOG_ERROR("No entry found for message code: " << *it); + continue; + } + policy_table::MessageLanguages msg_languages = messages_it->second; // If message has no records with required language, fallback language // should be used instead. diff --git a/src/components/policy/policy_regular/src/cache_manager.cc b/src/components/policy/policy_regular/src/cache_manager.cc index cf4164d133..9cce86322a 100644 --- a/src/components/policy/policy_regular/src/cache_manager.cc +++ b/src/components/policy/policy_regular/src/cache_manager.cc @@ -987,8 +987,13 @@ std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg( std::vector<std::string>::const_iterator it_end = msg_codes.end(); sync_primitives::AutoLock auto_lock(cache_lock_); for (; it != it_end; ++it) { - policy_table::MessageLanguages msg_languages = - (*pt_->policy_table.consumer_friendly_messages->messages)[*it]; + auto messages = pt_->policy_table.consumer_friendly_messages->messages; + auto messages_it = messages->find(*it); + if (messages->end() == messages_it) { + SDL_LOG_ERROR("No entry found for message code: " << *it); + continue; + } + policy_table::MessageLanguages msg_languages = messages_it->second; policy_table::MessageString message_string; |