Skip to content

Commit

Permalink
Use the correct token from the client
Browse files Browse the repository at this point in the history
This fixes the case where AcceptSecContext is always called with the
first token sent by the client instead of the most recently sent one.

Fixes golang/go#43875
  • Loading branch information
bodgit committed Jan 25, 2021
1 parent eec23a3 commit 0d58e4d
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions ssh/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ func checkSourceAddress(addr net.Addr, sourceAddrs string) error {
return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr)
}

func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, firstToken []byte, s *connection,
func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection,
sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) {
gssAPIServer := gssapiConfig.Server
defer gssAPIServer.DeleteSecContext()
Expand All @@ -331,7 +331,7 @@ func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, firstToken []byte, s *c
outToken []byte
needContinue bool
)
outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(firstToken)
outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(token)
if err != nil {
return err, nil, nil
}
Expand All @@ -353,6 +353,7 @@ func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, firstToken []byte, s *c
if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {
return nil, nil, err
}
token = userAuthGSSAPITokenReq.Token
}
packet, err := s.transport.readPacket()
if err != nil {
Expand Down

0 comments on commit 0d58e4d

Please sign in to comment.