From 55a5affcb8251c6ef677d78ea848dc8d26b90471 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 4 Mar 2014 02:52:12 -0500 Subject: [PATCH] Do not allow guest nicks to exceed nicklen, and use a default enforcer ident/host if none is provided --- modules/pseudoclients/nickserv.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index a086818788..deb5cea338 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -66,8 +66,8 @@ class NickServRelease : public User, public Timer Anope::string nick; public: - NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get("enforceruser"), - Config->GetModule("nickserv")->Get("enforcerhost"), "", "", Me, "Services Enforcer", Anope::CurTime, "", Servers::TS6_UID_Retrieve(), NULL), Timer(delay), nick(na->nick) + NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get("enforceruser", "user"), + Config->GetModule("nickserv")->Get("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", Servers::TS6_UID_Retrieve(), NULL), Timer(delay), nick(na->nick) { /* Erase the current release timer and use the new one */ Anope::map::iterator nit = NickServReleases.find(this->nick); @@ -210,6 +210,7 @@ class NickServCore : public Module, public NickServService if (IRCD->CanSVSNick) { + unsigned nicklen = Config->GetBlock("networkinfo")->Get("nicklen"); const Anope::string &guestprefix = Config->GetModule("nickserv")->Get("guestnickprefix", "Guest"); Anope::string guestnick; @@ -218,6 +219,8 @@ class NickServCore : public Module, public NickServService do { guestnick = guestprefix + stringify(static_cast(rand())); + if (guestnick.length() > nicklen) + guestnick = guestnick.substr(0, nicklen); } while (User::Find(guestnick) && i++ < 10);