From 91db058809e6f14f6aa22d2f09e0a969676bf4e6 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 5 Nov 2020 17:55:13 +0300 Subject: [PATCH] Add filter option argument checks. --- telegram-bot-api/telegram-bot-api.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index 3422591..9cd9d13 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -184,17 +184,20 @@ int main(int argc, char *argv[]) { options.add_option('d', "dir", "server working directory", td::OptionParser::parse_string(working_directory)); options.add_option('t', "temp-dir", "directory for storing HTTP server temporary files", td::OptionParser::parse_string(temporary_directory)); - options.add_checked_option('\0', "filter", - "\"/\". Allow only bots with 'bot_user_id % modulo == remainder'", - [&](td::Slice rem_mod) { - td::Slice rem; - td::Slice mod; - std::tie(rem, mod) = td::split(rem_mod, '/'); - TRY_RESULT(rem_i, td::to_integer_safe(rem)); - TRY_RESULT(mod_i, td::to_integer_safe(mod)); - token_range = {rem_i, mod_i}; - return td::Status::OK(); - }); + options.add_checked_option( + '\0', "filter", "\"/\". Allow only bots with 'bot_user_id % modulo == remainder'", + [&](td::Slice rem_mod) { + td::Slice rem; + td::Slice mod; + std::tie(rem, mod) = td::split(rem_mod, '/'); + TRY_RESULT(rem_i, td::to_integer_safe(rem)); + TRY_RESULT(mod_i, td::to_integer_safe(mod)); + if (rem_i < 0 || rem_i >= mod_i) { + return td::Status::Error("Wrong argument specified: ensure that 0 <= remainder < modulo"); + } + token_range = {rem_i, mod_i}; + return td::Status::OK(); + }); options.add_checked_option('\0', "max-webhook-connections", "default value of the maximum webhook connections per bot", td::OptionParser::parse_integer(parameters->default_max_webhook_connections_));