From 1eddf1cc1cab2b88b211b3af92b4ba83d192937d Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 17 Aug 2024 19:57:16 +0100 Subject: [PATCH] [Minor] Fix stripping of the last characters --- src/client/rspamc.cxx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/client/rspamc.cxx b/src/client/rspamc.cxx index 1e08304937..1c67e4167d 100644 --- a/src/client/rspamc.cxx +++ b/src/client/rspamc.cxx @@ -524,16 +524,13 @@ rspamc_password_callback(const char *option_name, else { /* Strip trailing spaces */ auto *map = (char *) locked_mmap.value().get_map(); - auto *end = map + locked_mmap.value().get_size() - 1; - - while (g_ascii_isspace(*end) && end > map) { - end--; - } - - end++; - value_view = std::string_view{map, static_cast(end - map + 1)}; - processed_passwd.assign(std::begin(value_view), std::end(value_view)); - processed_passwd.push_back('\0'); + value_view = std::string_view{map, locked_mmap->get_size()}; + auto right = value_view.end() - 1; + for (; right > value_view.cbegin() && g_ascii_isspace(*right); --right) + ; + std::string_view str{value_view.begin(), static_cast(right - value_view.begin()) + 1}; + processed_passwd.assign(std::begin(str), std::end(str)); + processed_passwd.push_back('\0'); /* Null-terminate for C part */ } } else { -- 2.47.3