1
0
Fork 0
forked from External/ergo

be more pedantic about distinguishing skeletons and casefolds

This commit is contained in:
Shivaram Lingamneni 2019-05-24 13:09:56 -04:00
parent a6164cd9c4
commit 8794740f89
5 changed files with 37 additions and 18 deletions

View file

@ -129,13 +129,20 @@ func (clients *ClientManager) Resume(oldClient *Client, session *Session) (err e
// SetNick sets a client's nickname, validating it against nicknames in use
func (clients *ClientManager) SetNick(client *Client, session *Session, newNick string) error {
if len(newNick) > client.server.Config().Limits.NickLen {
return errNicknameInvalid
}
newcfnick, err := CasefoldName(newNick)
if err != nil {
return err
return errNicknameInvalid
}
newSkeleton, err := Skeleton(newNick)
if err != nil {
return err
return errNicknameInvalid
}
if restrictedCasefoldedNicks[newcfnick] || restrictedSkeletons[newSkeleton] {
return errNicknameInvalid
}
reservedAccount, method := client.server.accounts.EnforcementStatus(newcfnick, newSkeleton)