go.crypto/ssh: add a error return to decode(), and avoid casting decode() output.

R=dave, kardianos, agl
CC=gobot, golang-dev
https://golang.org/cl/9738053
This commit is contained in:
Han-Wen Nienhuys
2013-06-06 10:24:21 -04:00
committed by Adam Langley
parent e8889f5e72
commit 36bf31eb71
4 changed files with 27 additions and 13 deletions
+5 -4
View File
@@ -562,7 +562,11 @@ func (s *ServerConn) Accept() (Channel, error) {
}
s.lock.Unlock()
default:
switch msg := decode(packet).(type) {
decoded, err := decode(packet)
if err != nil {
return nil, err
}
switch msg := decoded.(type) {
case *channelOpenMsg:
if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 {
return nil, errors.New("ssh: invalid MaxPacketSize from peer")
@@ -643,9 +647,6 @@ func (s *ServerConn) Accept() (Channel, error) {
return nil, err
}
s.lock.Unlock()
case UnexpectedMessageError:
return nil, msg
case *disconnectMsg:
return nil, io.EOF
default: