From 2b34a6befa9afd68bc7abeb4e5f66ff7efeb7b1d Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 7 Sep 2018 19:12:48 +0300 Subject: [PATCH] Ignore invalid strings in the database. GitOrigin-RevId: 46d75ea61a1ab03d2f9540f001652ff7c08cd44c --- td/telegram/LanguagePackManager.cpp | 27 ++++++++++++++------------- td/telegram/LanguagePackManager.h | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/td/telegram/LanguagePackManager.cpp b/td/telegram/LanguagePackManager.cpp index 913d6062..8a38d542 100644 --- a/td/telegram/LanguagePackManager.cpp +++ b/td/telegram/LanguagePackManager.cpp @@ -414,25 +414,26 @@ bool LanguagePackManager::language_has_strings(Language *language, const vector< return true; } -void LanguagePackManager::load_language_string_unsafe(Language *language, const string &key, string &value) { +void LanguagePackManager::load_language_string_unsafe(Language *language, const string &key, const string &value) { CHECK(is_valid_key(key)); - if (value.empty() || value == "3") { - if (!language->is_full_) { - language->deleted_strings_.insert(key); - } - return; - } - if (value[0] == '1') { language->ordinary_strings_.emplace(key, value.substr(1)); return; } - CHECK(value[0] == '2'); - auto all = full_split(Slice(value).substr(1), '\x00'); - CHECK(all.size() == 6); - language->pluralized_strings_.emplace( - key, PluralizedString{all[0].str(), all[1].str(), all[2].str(), all[3].str(), all[4].str(), all[5].str()}); + if (value[0] == '2') { + auto all = full_split(Slice(value).substr(1), '\x00'); + if (all.size() == 6) { + language->pluralized_strings_.emplace( + key, PluralizedString{all[0].str(), all[1].str(), all[2].str(), all[3].str(), all[4].str(), all[5].str()}); + return; + } + } + + LOG_IF(ERROR, !value.empty() && value != "3") << "Have invalid value \"" << value << '"'; + if (!language->is_full_) { + language->deleted_strings_.insert(key); + } } bool LanguagePackManager::load_language_strings(LanguageDatabase *database, Language *language, diff --git a/td/telegram/LanguagePackManager.h b/td/telegram/LanguagePackManager.h index 5992226c..a62bf320 100644 --- a/td/telegram/LanguagePackManager.h +++ b/td/telegram/LanguagePackManager.h @@ -104,7 +104,7 @@ class LanguagePackManager : public NetQueryCallback { static bool language_has_string_unsafe(const Language *language, const string &key); static bool language_has_strings(Language *language, const vector &keys); - static void load_language_string_unsafe(Language *language, const string &key, string &value); + static void load_language_string_unsafe(Language *language, const string &key, const string &value); static bool load_language_strings(LanguageDatabase *database, Language *language, const vector &keys); static td_api::object_ptr get_language_pack_string_value_object(const string &value);