From 15cdfb974a67d11425090980e727746f8a351078 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 17 Nov 2019 19:30:53 +0300 Subject: [PATCH] Ignore invalid UTF-8 hashtags from broken database. GitOrigin-RevId: 085b83bd70c13d5b4f4d846ca0dba6e9c23b59a7 --- td/telegram/HashtagHints.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/td/telegram/HashtagHints.cpp b/td/telegram/HashtagHints.cpp index 3880e95c9..d2eccd076 100644 --- a/td/telegram/HashtagHints.cpp +++ b/td/telegram/HashtagHints.cpp @@ -13,6 +13,7 @@ #include "td/utils/logging.h" #include "td/utils/tl_helpers.h" +#include "td/utils/utf8.h" #include @@ -73,6 +74,11 @@ string HashtagHints::get_key() const { } void HashtagHints::hashtag_used_impl(const string &hashtag) { + if (!check_utf8(hashtag)) { + LOG(ERROR) << "Trying to add invalid UTF-8 hashtag \"" << hashtag << '"'; + return; + } + // TODO: may be it should be optimized a little auto key = std::hash()(hashtag); hints_.add(key, hashtag); @@ -87,7 +93,7 @@ void HashtagHints::from_db(Result data, bool dummy) { std::vector hashtags; auto status = unserialize(hashtags, data.ok()); if (status.is_error()) { - LOG(ERROR) << status; + LOG(ERROR) << "Failed to unserialize hashtag hints: " << status; return; }