X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcmd_oper.cpp;h=0c002612182fac29153386706f483857809ccef5;hb=1948b0ac2804166261e4ad4d4b8722a4def84135;hp=8e57329d4702899a37f0652c3ca431743f930357;hpb=efe386c9fb8480f69066edf4da84f84504bc9320;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/cmd_oper.cpp b/src/cmd_oper.cpp index 8e57329d4..0c0026121 100644 --- a/src/cmd_oper.cpp +++ b/src/cmd_oper.cpp @@ -57,7 +57,6 @@ 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]; @@ -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;