diff options
Diffstat (limited to 'ssh/server.go')
| -rw-r--r-- | ssh/server.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/ssh/server.go b/ssh/server.go index 158a0ae..5c640a7 100644 --- a/ssh/server.go +++ b/ssh/server.go @@ -10,6 +10,7 @@ import ( "crypto/rand" "crypto/rsa" "crypto/x509" + "encoding/binary" "encoding/pem" "errors" "io" @@ -548,14 +549,14 @@ func (s *ServerConn) Accept() (Channel, error) { // malformed data packet return nil, ParseError{msgChannelData} } - remoteId := uint32(packet[1])<<24 | uint32(packet[2])<<16 | uint32(packet[3])<<8 | uint32(packet[4]) + remoteId := binary.BigEndian.Uint32(packet[1:5]) s.lock.Lock() c, ok := s.channels[remoteId] if !ok { s.lock.Unlock() continue } - if length := int(packet[5])<<24 | int(packet[6])<<16 | int(packet[7])<<8 | int(packet[8]); length > 0 { + if length := binary.BigEndian.Uint32(packet[5:9]); length > 0 { packet = packet[9:] c.handleData(packet[:length]) } |
