go.crypto/ssh: use binary.BigEndian throughout
A small cleanup.
R=agl, gustav.paul
CC=golang-dev
https://golang.org/cl/6406043
diff --git a/ssh/client.go b/ssh/client.go
index 235a733..e5748e3 100644
--- a/ssh/client.go
+++ b/ssh/client.go
@@ -7,6 +7,7 @@
import (
"crypto"
"crypto/rand"
+ "encoding/binary"
"errors"
"fmt"
"io"
@@ -212,8 +213,8 @@
// malformed data packet
return
}
- remoteId := uint32(packet[1])<<24 | uint32(packet[2])<<16 | uint32(packet[3])<<8 | uint32(packet[4])
- length := uint32(packet[5])<<24 | uint32(packet[6])<<16 | uint32(packet[7])<<8 | uint32(packet[8])
+ remoteId := binary.BigEndian.Uint32(packet[1:5])
+ length := binary.BigEndian.Uint32(packet[5:9])
packet = packet[9:]
if length != uint32(len(packet)) {
@@ -229,9 +230,9 @@
// malformed data packet
return
}
- remoteId := uint32(packet[1])<<24 | uint32(packet[2])<<16 | uint32(packet[3])<<8 | uint32(packet[4])
- datatype := uint32(packet[5])<<24 | uint32(packet[6])<<16 | uint32(packet[7])<<8 | uint32(packet[8])
- length := uint32(packet[9])<<24 | uint32(packet[10])<<16 | uint32(packet[11])<<8 | uint32(packet[12])
+ remoteId := binary.BigEndian.Uint32(packet[1:5])
+ datatype := binary.BigEndian.Uint32(packet[5:9])
+ length := binary.BigEndian.Uint32(packet[9:13])
packet = packet[13:]
if length != uint32(len(packet)) {
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 @@
"crypto/rand"
"crypto/rsa"
"crypto/x509"
+ "encoding/binary"
"encoding/pem"
"errors"
"io"
@@ -548,14 +549,14 @@
// 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])
}
diff --git a/ssh/transport.go b/ssh/transport.go
index 4c24a37..020d6d7 100644
--- a/ssh/transport.go
+++ b/ssh/transport.go
@@ -9,6 +9,7 @@
"crypto"
"crypto/cipher"
"crypto/subtle"
+ "encoding/binary"
"errors"
"hash"
"io"
@@ -90,7 +91,7 @@
macSize = uint32(r.mac.Size())
}
- length := uint32(lengthBytes[0])<<24 | uint32(lengthBytes[1])<<16 | uint32(lengthBytes[2])<<8 | uint32(lengthBytes[3])
+ length := binary.BigEndian.Uint32(lengthBytes[0:4])
paddingLength := uint32(lengthBytes[4])
if length <= paddingLength+1 {