File: fuzz.go

package info (click to toggle)
golang-github-insomniacslk-dhcp 0.0~git20220915.043f172-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,168 kB
  • sloc: makefile: 6
file content (33 lines) | stat: -rw-r--r-- 724 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// +build gofuzz

package dhcpv6

import (
	"bytes"
	"fmt"
)

// Fuzz is an entrypoint for go-fuzz (github.com/dvyukov/go-fuzz)
func Fuzz(data []byte) int {
	msg, err := FromBytes(data)
	if err != nil {
		return 0
	}

	serialized := msg.ToBytes()
	if !bytes.Equal(data, serialized) {
		rtMsg, err := FromBytes(serialized)
		fmt.Printf("Input:      %x\n", data)
		fmt.Printf("Round-trip: %x\n", serialized)
		fmt.Println("Message: ", msg.Summary())
		fmt.Printf("Go repr: %#v\n", msg)
		fmt.Println("round-trip reserialized: ", rtMsg.Summary())
		fmt.Printf("Go repr: %#v\n", rtMsg)
		if err != nil {
			fmt.Printf("failed to parse after deserialize-serialize: %v\n", err)
		}
		panic("round-trip different")
	}

	return 1
}