Closed
Description
The following program crashes when run with GOARCH=386:
package main
import (
"bytes"
"encoding/hex"
"golang.org/x/net/spdy"
"io/ioutil"
)
func main() {
data, _ := hex.DecodeString("80300004303000278000f42a")
framer, err := spdy.NewFramer(ioutil.Discard, bytes.NewReader(data))
if err != nil {
panic(err)
}
for score := 0; ; score++ {
f, err := framer.ReadFrame()
if err != nil {
if f != nil {
panic(err)
}
return
}
err = framer.WriteFrame(f)
if err != nil {
panic(err)
}
}
}
panic: runtime error: makeslice: len out of range
goroutine 1 [running]:
runtime.gopanic(0x8260000, 0x1860a310)
src/runtime/panic.go:477 +0x337 fp=0x1863de38 sp=0x1863ddf4
runtime.makeslice(0x8218700, 0x8000f42a, 0x0, 0x8000f42a, 0x0, 0x0, 0x0, 0x0)
src/runtime/slice.go:26 +0xb7 fp=0x1863de64 sp=0x1863de38
golang.org/x/net/spdy.(*SettingsFrame).read(0x18610cc0, 0x40030, 0x18610c30, 0x300027, 0x18612540, 0x0, 0x0)
src/golang.org/x/net/spdy/read.go:46 +0x129 fp=0x1863dec4 sp=0x1863de64
golang.org/x/net/spdy.(*Framer).parseControlFrame(0x18612540, 0x40030, 0x0, 0x0, 0x0, 0x0)
src/golang.org/x/net/spdy/read.go:171 +0x1a1 fp=0x1863df1c sp=0x1863dec4
golang.org/x/net/spdy.(*Framer).ReadFrame(0x18612540, 0x0, 0x0, 0x0, 0x0)
src/golang.org/x/net/spdy/read.go:154 +0x128 fp=0x1863df64 sp=0x1863df1c
main.main()
spdy.go:17 +0x13f fp=0x1863dfc8 sp=0x1863df64
on commit 6f62f426de90c0ed6a55207b51476115fcb17237