From 59ee2d9dc81b2ed89f073b1541fc8d8c4f1f28f8 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Mon, 29 Jan 2024 11:21:34 +0100 Subject: Updated ChatLogger::secureName to fixed version Using the latest implementation from ManaPlus. Previous version was introduced with 844e9a7a72faca6a212e788a3adc45e17f41dca6 and failed to "secure" the name due to broken conditions. --- src/chatlogger.cpp | 26 ++++++++++++++++++-------- src/chatlogger.h | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/chatlogger.cpp b/src/chatlogger.cpp index e126b0ef..904da133 100644 --- a/src/chatlogger.cpp +++ b/src/chatlogger.cpp @@ -124,17 +124,27 @@ std::string ChatLogger::getDateString() const return date; } -std::string ChatLogger::secureName(std::string &name) const +std::string ChatLogger::secureName(std::string &name) { - for (char & f : name) + const size_t sz = name.length(); + for (size_t f = 0; f < sz; f ++) { - if (f < '0' && f > '9' && f < 'a' && f > 'z' - && f < 'A' && f > 'Z' - && f != '-' && f != '+' && f != '=' - && f != '.' && f != ','&& f != ')' - && f != '(' && f != '[' && f != ')') + const unsigned char ch = name[f]; + if ((ch < '0' || ch > '9') && + (ch < 'a' || ch > 'z') && + (ch < 'A' || ch > 'Z') && + ch != '-' && + ch != '+' && + ch != '=' && + ch != '.' && + ch != ',' && + ch != ')' && + ch != '(' && + ch != '[' && + ch != ']' && + ch != '#') { - f = '_'; + name[f] = '_'; } } return name; diff --git a/src/chatlogger.h b/src/chatlogger.h index de7d17d8..e9e53798 100644 --- a/src/chatlogger.h +++ b/src/chatlogger.h @@ -45,7 +45,7 @@ class ChatLogger std::string getDateString() const; - std::string secureName(std::string &str) const; + static std::string secureName(std::string &str); void setServerName(const std::string &serverName); -- cgit v1.2.3-60-g2f50