fuzz.go raw

   1  //go:build fuzz
   2  // +build fuzz
   3  
   4  package dns
   5  
   6  import "strings"
   7  
   8  func Fuzz(data []byte) int {
   9  	msg := new(Msg)
  10  
  11  	if err := msg.Unpack(data); err != nil {
  12  		return 0
  13  	}
  14  	if _, err := msg.Pack(); err != nil {
  15  		return 0
  16  	}
  17  
  18  	return 1
  19  }
  20  
  21  func FuzzNewRR(data []byte) int {
  22  	str := string(data)
  23  	// Do not fuzz lines that include the $INCLUDE keyword and hint the fuzzer
  24  	// at avoiding them.
  25  	// See GH#1025 for context.
  26  	if strings.Contains(strings.ToUpper(str), "$INCLUDE") {
  27  		return -1
  28  	}
  29  	if _, err := NewRR(str); err != nil {
  30  		return 0
  31  	}
  32  	return 1
  33  }
  34