From 64c1eb8feb54180fab138ef8c9889a6d1013d168 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Mon, 24 Aug 2015 19:13:34 +0300 Subject: [PATCH] PR fixes --- search/query_saver.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/search/query_saver.cpp b/search/query_saver.cpp index 641ea8667b..5a9592fcab 100644 --- a/search/query_saver.cpp +++ b/search/query_saver.cpp @@ -10,10 +10,18 @@ namespace { -size_t constexpr kMaxSuggestCount = 10; char constexpr kSettingsKey[] = "UserQueries"; using TLength = uint16_t; +TLength constexpr kMaxSuggestCount = 10; size_t constexpr kLengthTypeSize = sizeof(TLength); + +bool ReadLength(ReaderSource & reader, TLength & length) +{ + if (reader.Size() < kLengthTypeSize) + return false; + reader.Read(&length, kLengthTypeSize); + return true; +} } // namespace namespace search @@ -74,29 +82,23 @@ void QuerySaver::Deserialize(string const & data) MemReader rawReader(decodedData.c_str(), decodedData.size()); ReaderSource reader(rawReader); - if (reader.Size() < kLengthTypeSize) - { - EmergencyReset(); - return; - } TLength queriesCount; - reader.Read(&queriesCount, kLengthTypeSize); - - if (queriesCount > kMaxSuggestCount) + if (!ReadLength(reader, queriesCount)) { EmergencyReset(); return; } + queriesCount = min(queriesCount, kMaxSuggestCount); + for (TLength i = 0; i < queriesCount; ++i) { TLength stringLength; - if (reader.Size() < kLengthTypeSize) + if (!ReadLength(reader, stringLength)) { EmergencyReset(); return; } - reader.Read(&stringLength, kLengthTypeSize); if (reader.Size() < stringLength) { EmergencyReset();