From e225a40901544c23116d2373ed63823a6e61a96f Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Fri, 16 Dec 2016 12:20:49 +0300 Subject: [PATCH] [banners] Fix crash in banners date parser --- indexer/banners.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/indexer/banners.cpp b/indexer/banners.cpp index 34162a53c4..b0bc01f4f8 100644 --- a/indexer/banners.cpp +++ b/indexer/banners.cpp @@ -20,7 +20,7 @@ bool StringToTimestamp(string const & s, time_t & result) { istringstream is(s); tm time; - is >> get_time(&time, "%F"); + is >> get_time(&time, "%Y-%m-%d"); CHECK(!is.fail(), ("Wrong date format:", s, "(expecting YYYY-MM-DD)")); time.tm_sec = time.tm_min = time.tm_hour = 0; @@ -82,12 +82,15 @@ void Banner::SetProperty(string const & name, string const & value) } else if (name == "start") { - CHECK(StringToTimestamp(value, m_activeAfter), ("Wrong start date", value, "for banner", m_id)); + if (!StringToTimestamp(value, m_activeAfter)) + LOG(LERROR, ("Wrong start date", value, "for banner", m_id)); } else if (name == "end") { - CHECK(StringToTimestamp(value, m_activeBefore), ("Wrong end date", value, "for banner", m_id)); - m_activeBefore += 24 * 60 * 60; // Add a day so we don't miss one + if (!StringToTimestamp(value, m_activeBefore)) + LOG(LERROR, ("Wrong end date", value, "for banner", m_id)); + else + m_activeBefore += 24 * 60 * 60; // Add a day so we don't miss one } else {