X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcmd_oper.cpp;h=0c002612182fac29153386706f483857809ccef5;hb=1948b0ac2804166261e4ad4d4b8722a4def84135;hp=20a4b5ba8aed987adba592790052b81809eccb99;hpb=fd556922919a35d6f292089fe2340ebc16574a2b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/cmd_oper.cpp b/src/cmd_oper.cpp index 20a4b5ba8..0c0026121 100644 --- a/src/cmd_oper.cpp +++ b/src/cmd_oper.cpp @@ -57,12 +57,11 @@ extern std::vector factory; extern time_t TIME; extern user_hash clientlist; extern chan_hash chanlist; -extern whowas_hash whowas; extern std::vector all_opers; extern std::vector local_users; extern userrec* fd_ref_table[MAX_DESCRIPTORS]; -bool OneOfMatches(char* host, char* hostlist) +bool OneOfMatches(const char* host, const char* hostlist) { std::stringstream hl(hostlist); std::string xhost; @@ -110,7 +109,14 @@ void cmd_oper::Handle (char **parameters, int pcnt, userrec *user) Config->ConfValue("type","host",j,HostName,&Config->config_f); if (*HostName) ChangeDisplayedHost(user,HostName); - strlcpy(user->oper,TypeName,NICKMAX); + if (!isnick(TypeName)) + { + WriteServ(user->fd,"491 %s :Invalid oper type (oper types must follow the same syntax as nicknames)",user->nick); + WriteOpers("*** CONFIGURATION ERROR! Oper type invalid for OperType '%s'",OperType); + log(DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but oper type erroneous.",user->nick,user->ident,user->host); + return; + } + strlcpy(user->oper,TypeName,NICKMAX-1); found = true; fail2 = false; break;