forked from quic-go/quic-go
append to a byte slice instead of a bytes.Buffer when serializing frames
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log"
|
||||
"math/rand"
|
||||
"time"
|
||||
@@ -253,11 +252,11 @@ func getFrames() []wire.Frame {
|
||||
|
||||
func main() {
|
||||
for _, f := range getFrames() {
|
||||
b := &bytes.Buffer{}
|
||||
if err := f.Write(b, version); err != nil {
|
||||
b, err := f.Write(nil, version)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if err := helper.WriteCorpusFileWithPrefix("corpus", b.Bytes(), 1); err != nil {
|
||||
if err := helper.WriteCorpusFileWithPrefix("corpus", b, 1); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
@@ -265,20 +264,22 @@ func main() {
|
||||
for i := 0; i < 30; i++ {
|
||||
frames := getFrames()
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
var b []byte
|
||||
for j := 0; j < rand.Intn(30)+2; j++ {
|
||||
if rand.Intn(10) == 0 { // write a PADDING frame
|
||||
b.WriteByte(0x0)
|
||||
b = append(b, 0)
|
||||
}
|
||||
f := frames[rand.Intn(len(frames))]
|
||||
if err := f.Write(b, version); err != nil {
|
||||
var err error
|
||||
b, err = f.Write(b, version)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if rand.Intn(10) == 0 { // write a PADDING frame
|
||||
b.WriteByte(0x0)
|
||||
b = append(b, 0)
|
||||
}
|
||||
}
|
||||
if err := helper.WriteCorpusFileWithPrefix("corpus", b.Bytes(), 1); err != nil {
|
||||
if err := helper.WriteCorpusFileWithPrefix("corpus", b, 1); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,10 +55,10 @@ func Fuzz(data []byte) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
var b []byte
|
||||
for _, f := range frames {
|
||||
if f == nil { // PADDING frame
|
||||
b.WriteByte(0x0)
|
||||
b = append(b, 0)
|
||||
continue
|
||||
}
|
||||
// We accept empty STREAM frames, but we don't write them.
|
||||
@@ -68,11 +68,12 @@ func Fuzz(data []byte) int {
|
||||
continue
|
||||
}
|
||||
}
|
||||
lenBefore := b.Len()
|
||||
if err := f.Write(b, version); err != nil {
|
||||
lenBefore := len(b)
|
||||
b, err := f.Write(b, version)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Error writing frame %#v: %s", f, err))
|
||||
}
|
||||
frameLen := b.Len() - lenBefore
|
||||
frameLen := len(b) - lenBefore
|
||||
if f.Length(version) != protocol.ByteCount(frameLen) {
|
||||
panic(fmt.Sprintf("Inconsistent frame length for %#v: expected %d, got %d", f, frameLen, f.Length(version)))
|
||||
}
|
||||
@@ -80,8 +81,8 @@ func Fuzz(data []byte) int {
|
||||
sf.PutBack()
|
||||
}
|
||||
}
|
||||
if b.Len() > parsedLen {
|
||||
panic(fmt.Sprintf("Serialized length (%d) is longer than parsed length (%d)", b.Len(), parsedLen))
|
||||
if len(b) > parsedLen {
|
||||
panic(fmt.Sprintf("Serialized length (%d) is longer than parsed length (%d)", len(b), parsedLen))
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user