瀏覽代碼

add test harness to verify gofuzz found bugs

Chris Bannister 10 年之前
父節點
當前提交
548315868e
共有 1 個文件被更改,包括 42 次插入0 次删除
  1. 42 0
      frame_test.go

+ 42 - 0
frame_test.go

@@ -0,0 +1,42 @@
+package gocql
+
+import (
+	"bytes"
+	"testing"
+)
+
+func TestFuzzBugs(t *testing.T) {
+	// these inputs are found using go-fuzz (https://github.com/dvyukov/go-fuzz)
+	// and should cause a panic unless fixed.
+	tests := []struct {
+		input []byte
+	}{
+		{input: []byte("00000\xa0000")},
+	}
+
+	for i, test := range tests {
+		t.Logf("test %d input: %q", i, test.input)
+
+		var bw bytes.Buffer
+
+		r := bytes.NewReader(test.input)
+
+		head, err := readHeader(r, make([]byte, 9))
+		if err != nil {
+			continue
+		}
+
+		framer := newFramer(r, &bw, nil, 3)
+		err = framer.readFrame(&head)
+		if err != nil {
+			continue
+		}
+
+		_, err = framer.parseFrame()
+		if err != nil {
+			continue
+		}
+
+		t.Errorf("(%d) expected to fail for input %q", i, test.input)
+	}
+}