Pārlūkot izejas kodu

Merge pull request #411 from Zariel/fuzz-byte-out-of-range

ensure we have enough bytes to read 1 byte
Chris Bannister 10 gadi atpakaļ
vecāks
revīzija
86b298e1f2
2 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 4 0
      frame.go
  2. 2 0
      frame_test.go

+ 4 - 0
frame.go

@@ -1193,6 +1193,10 @@ func (f *framer) writeBatchFrame(streamID int, w *writeBatchFrame) error {
 }
 
 func (f *framer) readByte() byte {
+	if len(f.rbuf) < 1 {
+		panic(fmt.Errorf("not enough bytes in buffer to read byte require 1 got: %d", len(f.rbuf)))
+	}
+
 	b := f.rbuf[0]
 	f.rbuf = f.rbuf[1:]
 	return b

+ 2 - 0
frame_test.go

@@ -21,6 +21,8 @@ func TestFuzzBugs(t *testing.T) {
 			"0000000"),
 		[]byte("\x82\xe600\x00\x00\x00\x000"),
 		[]byte("\x8200\b\x00\x00\x00\b0\x00\x00\x00\x040000"),
+		[]byte("\x8200\x00\x00\x00\x00\x100\x00\x00\x12\x00\x00\x0000000" +
+			"00000"),
 	}
 
 	for i, test := range tests {