frame_test.go 690 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package gocql
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func TestFuzzBugs(t *testing.T) {
  7. // these inputs are found using go-fuzz (https://github.com/dvyukov/go-fuzz)
  8. // and should cause a panic unless fixed.
  9. tests := [][]byte{
  10. []byte("00000\xa0000"),
  11. }
  12. for i, test := range tests {
  13. t.Logf("test %d input: %q", i, test)
  14. var bw bytes.Buffer
  15. r := bytes.NewReader(test)
  16. head, err := readHeader(r, make([]byte, 9))
  17. if err != nil {
  18. continue
  19. }
  20. framer := newFramer(r, &bw, nil, 3)
  21. err = framer.readFrame(&head)
  22. if err != nil {
  23. continue
  24. }
  25. _, err = framer.parseFrame()
  26. if err != nil {
  27. continue
  28. }
  29. t.Errorf("(%d) expected to fail for input %q", i, test)
  30. }
  31. }