summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2022-02-04 10:13:10 -0500
committerGitHub <noreply@github.com>2022-02-04 10:13:10 -0500
commit2f002290411cae9a414c4dfccc93bb777a9482d0 (patch)
tree14983ee34cfb1ef0455557722467cbcf75d7ddb2
parenteebd1a9cfc6a25bb0a9618cd34ddf57751b14d53 (diff)
downloadsdl_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
-rw-r--r--src/components/policy/policy_external/src/cache_manager.cc9
-rw-r--r--src/components/policy/policy_regular/src/cache_manager.cc9
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;