Source file
src/debug/pe/fuzz_test.go
1
2
3
4
5 package pe_test
6
7 import (
8 "bytes"
9 "debug/pe"
10 "os"
11 "path/filepath"
12 "testing"
13 )
14
15 func FuzzReader(f *testing.F) {
16 if testing.Short() {
17 f.Skip("Skipping in short mode")
18 }
19
20 testdata, err := os.ReadDir("testdata")
21 if err != nil {
22 f.Fatalf("failed to read testdata directory: %s", err)
23 }
24 for _, de := range testdata {
25 if de.IsDir() || filepath.Ext(de.Name()) == ".c" {
26 continue
27 }
28 b, err := os.ReadFile(filepath.Join("testdata", de.Name()))
29 if err != nil {
30 f.Fatalf("failed to read testdata: %s", err)
31 }
32 f.Add(b)
33 }
34
35 f.Fuzz(func(t *testing.T, data []byte) {
36 f, err := pe.NewFile(bytes.NewReader(data))
37 if err != nil {
38 return
39 }
40 defer f.Close()
41 f.ImportedLibraries()
42 f.ImportedSymbols()
43 f.Section(".data")
44 f.Section(".text")
45 for _, c := range f.COFFSymbols {
46 _, err := c.FullName(f.StringTable)
47 if err != nil {
48 continue
49 }
50 }
51 dw, err := f.DWARF()
52 if err != nil {
53 return
54 }
55 dr := dw.Reader()
56 for {
57 e, _ := dr.Next()
58 if e == nil {
59 break
60 }
61 }
62 })
63 }
64
View as plain text