golang/go

x/net/spdy: stream id zero is disallowed

dvyukov opened this issue · 0 comments

The following program crashes:

package main

import (
    "bytes"
    "encoding/hex"
    "golang.org/x/net/spdy"
    "io/ioutil"
)

func main() {
    data, _ := hex.DecodeString("0000000030000000")
    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: stream id zero is disallowed

goroutine 1 [running]:
runtime.gopanic(0x6904e0, 0xc20800e8c0)
    src/runtime/panic.go:477 +0x410 fp=0xc20804fec8 sp=0xc20804fe48
main.main()
    spdy.go:20 +0x1fb fp=0xc20804ff90 sp=0xc20804fec8

Either WriteFrame must be able to handle ReadFrame output, or ReadFrame must not produce this output (error instead).

on commit 6f62f426de90c0ed6a55207b51476115fcb17237