]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/tls: better error for oversized handshake messages.
authorAdam Langley <agl@golang.org>
Thu, 10 Mar 2016 22:52:01 +0000 (14:52 -0800)
committerAdam Langley <agl@golang.org>
Sat, 12 Mar 2016 00:13:02 +0000 (00:13 +0000)
This change improves the error message when encountering a TLS handshake
message that is larger than our limit (64KB). Previously the error was
just “local error: internal error”.

Updates #13401.

Change-Id: I86127112045ae33e51079e3bc047dd7386ddc71a
Reviewed-on: https://go-review.googlesource.com/20547
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Adam Langley <agl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/crypto/tls/conn.go

index 89e4c2f74ae5908247df0e9202a22fb9017cf2e7..42445b94d75c3dcce4b015bafee1a0f61ec847dc 100644 (file)
@@ -803,7 +803,8 @@ func (c *Conn) readHandshake() (interface{}, error) {
        data := c.hand.Bytes()
        n := int(data[1])<<16 | int(data[2])<<8 | int(data[3])
        if n > maxHandshake {
-               return nil, c.in.setErrorLocked(c.sendAlert(alertInternalError))
+               c.sendAlertLocked(alertInternalError)
+               return nil, c.in.setErrorLocked(fmt.Errorf("tls: handshake message of length %d bytes exceeds maximum of %d bytes", n, maxHandshake))
        }
        for c.hand.Len() < 4+n {
                if err := c.in.err; err != nil {