mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-20 14:20:00 -08:00
Fix certificate matching in handleAuthenticate
This commit is contained in:
parent
5607764dfa
commit
96684f41d4
2 changed files with 7 additions and 5 deletions
|
|
@ -256,7 +256,9 @@ func NewServerFromFrozen(filename string) (s *Server, err os.Error) {
|
|||
|
||||
s.Users[u.Id] = u
|
||||
s.UserNameMap[u.Name] = u
|
||||
s.UserCertMap[u.CertHash] = u
|
||||
if len(u.CertHash) > 0 {
|
||||
s.UserCertMap[u.CertHash] = u
|
||||
}
|
||||
}
|
||||
|
||||
return s, nil
|
||||
|
|
|
|||
|
|
@ -351,7 +351,7 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
|||
}
|
||||
|
||||
// Did we get a username?
|
||||
if auth.Username == nil {
|
||||
if auth.Username == nil || len(*auth.Username) == 0 {
|
||||
client.RejectAuth("InvalidUsername", "Please specify a username to log in")
|
||||
return
|
||||
}
|
||||
|
|
@ -392,16 +392,16 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
|||
// First look up registration by name.
|
||||
user, exists := server.UserNameMap[client.Username]
|
||||
if exists {
|
||||
if user.CertHash == client.CertHash {
|
||||
if len(client.CertHash) > 0 && user.CertHash == client.CertHash {
|
||||
client.user = user
|
||||
} else {
|
||||
client.Panic("Invalid cert hash for user")
|
||||
client.RejectAuth("WrongUserPW", "Wrong certificate hash")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Name matching didn't do. Try matching by certificate.
|
||||
if client.user == nil {
|
||||
if client.user == nil && len(client.CertHash) > 0 {
|
||||
user, exists := server.UserCertMap[client.CertHash]
|
||||
if exists {
|
||||
client.user = user
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue