Refuse passwords over 72 bytes and confirm only stored ones (closes #144)
check / check (push) Waiting to run
check / check (push) Waiting to run
bcrypt cannot hash a password longer than 72 bytes. PASS over the HTTP API answered one with a 500, and the IRC listener confirmed it without storing it. Both transports now refuse a password outside 8 to 72 bytes with the reply a short one already got: 461 over the HTTP API, a NOTICE over the IRC listener. setPassword returns its error, and "Password set" is sent only when the password was stored. A PASS given before registration is checked after the welcome burst and gets the same NOTICE. Model: opus-5-5
This commit is contained in:
@@ -1216,15 +1216,14 @@ func (c *Conn) handlePassPostReg(
|
||||
}
|
||||
|
||||
password := msg.Params[0]
|
||||
if len(password) < minPasswordLen {
|
||||
c.sendFromServer("NOTICE", c.nick,
|
||||
"Password must be at least 8 characters",
|
||||
)
|
||||
|
||||
if !c.checkPasswordLength(password) {
|
||||
return
|
||||
}
|
||||
|
||||
c.setPassword(ctx, password)
|
||||
err := c.setPassword(ctx, password)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.sendFromServer("NOTICE", c.nick,
|
||||
"Password set. You can reconnect using "+
|
||||
|
||||
Reference in New Issue
Block a user