-
- ServerInstance->WriteOpers("%s used SETIDENT to change their ident from '%s' to '%s'", user->nick, user->ident, parameters[0]);
- strlcpy(user->ident, parameters[0], IDENTMAX+2);
+
+ if (parameters[0].size() > ServerInstance->Config->Limits.IdentMax)
+ {
+ user->WriteServ("NOTICE %s :*** SETIDENT: Ident is too long", user->nick.c_str());
+ return CMD_FAILURE;
+ }
+
+ if (!ServerInstance->IsIdent(parameters[0].c_str()))
+ {
+ user->WriteServ("NOTICE %s :*** SETIDENT: Invalid characters in ident", user->nick.c_str());
+ return CMD_FAILURE;
+ }
+
+ user->ChangeIdent(parameters[0].c_str());
+ ServerInstance->SNO->WriteGlobalSno('a', "%s used SETIDENT to change their ident to '%s'", user->nick.c_str(), user->ident.c_str());
+
+ return CMD_SUCCESS;