12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // +build gofuzz
- // Use with https://github.com/dvyukov/go-fuzz
- package btf
- import (
- "bytes"
- "encoding/binary"
- "github.com/cilium/ebpf/internal"
- )
- func FuzzSpec(data []byte) int {
- if len(data) < binary.Size(btfHeader{}) {
- return -1
- }
- spec, err := loadNakedSpec(bytes.NewReader(data), internal.NativeEndian, nil, nil)
- if err != nil {
- if spec != nil {
- panic("spec is not nil")
- }
- return 0
- }
- if spec == nil {
- panic("spec is nil")
- }
- return 1
- }
- func FuzzExtInfo(data []byte) int {
- if len(data) < binary.Size(btfExtHeader{}) {
- return -1
- }
- table := stringTable("\x00foo\x00barfoo\x00")
- info, err := parseExtInfo(bytes.NewReader(data), internal.NativeEndian, table)
- if err != nil {
- if info != nil {
- panic("info is not nil")
- }
- return 0
- }
- if info == nil {
- panic("info is nil")
- }
- return 1
- }
|