diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_spanningtree/uid.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/modules/m_spanningtree/uid.cpp b/src/modules/m_spanningtree/uid.cpp index 0aaabfd81..9ddc154c6 100644 --- a/src/modules/m_spanningtree/uid.cpp +++ b/src/modules/m_spanningtree/uid.cpp @@ -48,13 +48,22 @@ bool TreeSocket::ParseUID(const std::string &source, std::deque<std::string> &pa this->WriteLine(std::string(":")+this->ServerInstance->Config->GetSID()+" KILL "+params[0]+" :Invalid client introduction (Unknown server "+source+")"); return true; } - /* Check parameters for validity before introducing the client, discovered by dmb */ - if (!age_t) + else if (!age_t) { this->WriteLine(std::string(":")+this->ServerInstance->Config->GetSID()+" KILL "+params[0]+" :Invalid client introduction (Invalid TS?)"); return true; } + else if (!signon) + { + this->WriteLine(std::string(":")+this->ServerInstance->Config->GetSID()+" KILL "+params[0]+" :Invalid client introduction (Invalid signon?)"); + return true; + } + else if (params[8][0] != '+') + { + this->WriteLine(std::string(":")+this->ServerInstance->Config->GetSID()+" KILL "+params[0]+" :Invalid client introduction (Malformed MODE sequence?)"); + return true; + } /* check for collision */ user_hash::iterator iter = this->ServerInstance->Users->clientlist->find(params[2]); |