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