mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-20 06:10: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,8 +256,10 @@ func NewServerFromFrozen(filename string) (s *Server, err os.Error) {
|
||||||
|
|
||||||
s.Users[u.Id] = u
|
s.Users[u.Id] = u
|
||||||
s.UserNameMap[u.Name] = u
|
s.UserNameMap[u.Name] = u
|
||||||
|
if len(u.CertHash) > 0 {
|
||||||
s.UserCertMap[u.CertHash] = u
|
s.UserCertMap[u.CertHash] = u
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -351,7 +351,7 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Did we get a username?
|
// 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")
|
client.RejectAuth("InvalidUsername", "Please specify a username to log in")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -392,16 +392,16 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
|
||||||
// First look up registration by name.
|
// First look up registration by name.
|
||||||
user, exists := server.UserNameMap[client.Username]
|
user, exists := server.UserNameMap[client.Username]
|
||||||
if exists {
|
if exists {
|
||||||
if user.CertHash == client.CertHash {
|
if len(client.CertHash) > 0 && user.CertHash == client.CertHash {
|
||||||
client.user = user
|
client.user = user
|
||||||
} else {
|
} else {
|
||||||
client.Panic("Invalid cert hash for user")
|
client.RejectAuth("WrongUserPW", "Wrong certificate hash")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Name matching didn't do. Try matching by certificate.
|
// 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]
|
user, exists := server.UserCertMap[client.CertHash]
|
||||||
if exists {
|
if exists {
|
||||||
client.user = user
|
client.user = user
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue