From 71d53e4883cdb83b50f43cd934ac9b4cd2b95383 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Sun, 9 Dec 2012 18:06:21 +0100 Subject: Remove ServerLimits::Finalise(), it's completely wrong Truncate +1 long idents in User::ChangeIdent() --- include/configreader.h | 15 --------------- src/configreader.cpp | 2 -- src/helperfuncs.cpp | 4 ++-- src/modules/m_ident.cpp | 2 +- src/users.cpp | 2 +- 5 files changed, 4 insertions(+), 21 deletions(-) diff --git a/include/configreader.h b/include/configreader.h index 07c7a09f5..09d4e619d 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -102,21 +102,6 @@ class ServerLimits ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12), MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200) { } - - /** Finalises the settings by adding one. This allows for them to be used as-is - * without a 'value+1' when using the std::string assignment methods etc. - */ - void Finalise() - { - NickMax++; - ChanMax++; - IdentMax++; - MaxQuit++; - MaxTopic++; - MaxKick++; - MaxGecos++; - MaxAway++; - } }; struct CommandLineConf diff --git a/src/configreader.cpp b/src/configreader.cpp index 7d204bfb7..2577b83b8 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -648,8 +648,6 @@ void ServerConfig::Fill() OperSpyWhois = SPYWHOIS_SINGLEMSG; else OperSpyWhois = SPYWHOIS_NONE; - - Limits.Finalise(); } // WARNING: it is not safe to use most of the codebase in this function, as it diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 668cb95ec..5a8f55f11 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -339,8 +339,8 @@ bool IsNickHandler::Call(const char* n, size_t max) return false; } - /* too long? or not -- pointer arithmetic rocks */ - return (p < max); + /* too long? or not */ + return (p <= max); } /* return true for good ident, false else */ diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp index 93a3d6549..4d66a739e 100644 --- a/src/modules/m_ident.cpp +++ b/src/modules/m_ident.cpp @@ -242,7 +242,7 @@ class IdentRequestSocket : public EventHandler /* Truncate the ident at any characters we don't like, skip leading spaces */ for (std::string::const_iterator i = buf.begin()+lastcolon+1; i != buf.end(); ++i) { - if (result.size()+1 == ServerInstance->Config->Limits.IdentMax) + if (result.size() == ServerInstance->Config->Limits.IdentMax) /* Ident is getting too long */ break; diff --git a/src/users.cpp b/src/users.cpp index e55c7e099..30df3c153 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1483,7 +1483,7 @@ bool User::ChangeIdent(const char* newident) std::string quitstr = ":" + GetFullHost() + " QUIT :Changing ident"; - this->ident.assign(newident, 0, ServerInstance->Config->Limits.IdentMax + 1); + this->ident.assign(newident, 0, ServerInstance->Config->Limits.IdentMax); this->InvalidateCache(); -- cgit v1.2.3