- 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() > IDENTMAX)
+ {
+ user->WriteServ("NOTICE %s :*** SETIDENT: Ident is too long", user->nick);
+ return CMD_FAILURE;
+ }
+
+ if (!ServerInstance->IsIdent(parameters[0].c_str()))
+ {
+ user->WriteServ("NOTICE %s :*** SETIDENT: Invalid characters in ident", user->nick);
+ return CMD_FAILURE;
+ }
+
+ user->ChangeIdent(parameters[0].c_str());
+ ServerInstance->SNO->WriteToSnoMask('A', "%s used SETIDENT to change their ident to '%s'", user->nick, user->ident);
+
+ return CMD_SUCCESS;