fuzz_test.go 711 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package etchosts
  2. import (
  3. "os"
  4. "path/filepath"
  5. "testing"
  6. fuzz "github.com/AdaLogics/go-fuzz-headers"
  7. )
  8. func FuzzAdd(f *testing.F) {
  9. f.Fuzz(func(t *testing.T, data []byte) {
  10. ff := fuzz.NewConsumer(data)
  11. fileBytes, err := ff.GetBytes()
  12. if err != nil {
  13. return
  14. }
  15. noOfRecords, err := ff.GetInt()
  16. if err != nil {
  17. return
  18. }
  19. recs := make([]Record, 0)
  20. for i := 0; i < noOfRecords%40; i++ {
  21. r := Record{}
  22. err = ff.GenerateStruct(&r)
  23. if err != nil {
  24. return
  25. }
  26. recs = append(recs, r)
  27. }
  28. tmpDir := t.TempDir()
  29. testFile := filepath.Join(tmpDir, "testFile")
  30. err = os.WriteFile(testFile, fileBytes, 0o644)
  31. if err != nil {
  32. return
  33. }
  34. _ = Add(testFile, recs)
  35. })
  36. }