Fix certificate matching in handleAuthenticate

This commit is contained in:
Mikkel Krautz 2011-04-11 22:44:52 +02:00
parent 5607764dfa
commit 96684f41d4
2 changed files with 7 additions and 5 deletions

View file

@ -256,7 +256,9 @@ 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
s.UserCertMap[u.CertHash] = u if len(u.CertHash) > 0 {
s.UserCertMap[u.CertHash] = u
}
} }
return s, nil return s, nil

View file

@ -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