github.com/moby/docker@v26.1.3+incompatible/libnetwork/etchosts/fuzz_test.go (about)

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