lz4.go 754 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package lz4
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "github.com/pierrec/lz4"
  6. )
  7. // lz4.Reader fuzz function
  8. func Fuzz(data []byte) int {
  9. // uncompress some data
  10. d, err := ioutil.ReadAll(lz4.NewReader(bytes.NewReader(data)))
  11. if err != nil {
  12. return 0
  13. }
  14. // got valid compressed data
  15. // compress the uncompressed data
  16. // and compare with the original input
  17. buf := bytes.NewBuffer(nil)
  18. zw := lz4.NewWriter(buf)
  19. n, err := zw.Write(d)
  20. if err != nil {
  21. panic(err)
  22. }
  23. if n != len(d) {
  24. panic("short write")
  25. }
  26. err = zw.Close()
  27. if err != nil {
  28. panic(err)
  29. }
  30. // uncompress the newly compressed data
  31. ud, err := ioutil.ReadAll(lz4.NewReader(buf))
  32. if err != nil {
  33. panic(err)
  34. }
  35. if bytes.Compare(d, ud) != 0 {
  36. panic("not equal")
  37. }
  38. return 1
  39. }