@@ -8,101 +8,101 @@ import (
8
8
)
9
9
10
10
type AllowPair struct {
11
- err string
12
- fun string
11
+ Err string
12
+ Fun string
13
13
}
14
14
15
15
var allowedErrors = []AllowPair {
16
16
// pkg/archive/tar
17
- {err : "io.EOF" , fun : "(*archive/tar.Reader).Next" },
18
- {err : "io.EOF" , fun : "(*archive/tar.Reader).Read" },
17
+ {Err : "io.EOF" , Fun : "(*archive/tar.Reader).Next" },
18
+ {Err : "io.EOF" , Fun : "(*archive/tar.Reader).Read" },
19
19
// pkg/bufio
20
- {err : "io.EOF" , fun : "(*bufio.Reader).Discard" },
21
- {err : "io.EOF" , fun : "(*bufio.Reader).Peek" },
22
- {err : "io.EOF" , fun : "(*bufio.Reader).Read" },
23
- {err : "io.EOF" , fun : "(*bufio.Reader).ReadByte" },
24
- {err : "io.EOF" , fun : "(*bufio.Reader).ReadBytes" },
25
- {err : "io.EOF" , fun : "(*bufio.Reader).ReadLine" },
26
- {err : "io.EOF" , fun : "(*bufio.Reader).ReadSlice" },
27
- {err : "io.EOF" , fun : "(*bufio.Reader).ReadString" },
28
- {err : "io.EOF" , fun : "(*bufio.Scanner).Scan" },
20
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).Discard" },
21
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).Peek" },
22
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).Read" },
23
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).ReadByte" },
24
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).ReadBytes" },
25
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).ReadLine" },
26
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).ReadSlice" },
27
+ {Err : "io.EOF" , Fun : "(*bufio.Reader).ReadString" },
28
+ {Err : "io.EOF" , Fun : "(*bufio.Scanner).Scan" },
29
29
// pkg/bytes
30
- {err : "io.EOF" , fun : "(*bytes.Buffer).Read" },
31
- {err : "io.EOF" , fun : "(*bytes.Buffer).ReadByte" },
32
- {err : "io.EOF" , fun : "(*bytes.Buffer).ReadBytes" },
33
- {err : "io.EOF" , fun : "(*bytes.Buffer).ReadRune" },
34
- {err : "io.EOF" , fun : "(*bytes.Buffer).ReadString" },
35
- {err : "io.EOF" , fun : "(*bytes.Reader).Read" },
36
- {err : "io.EOF" , fun : "(*bytes.Reader).ReadAt" },
37
- {err : "io.EOF" , fun : "(*bytes.Reader).ReadByte" },
38
- {err : "io.EOF" , fun : "(*bytes.Reader).ReadRune" },
39
- {err : "io.EOF" , fun : "(*bytes.Reader).ReadString" },
30
+ {Err : "io.EOF" , Fun : "(*bytes.Buffer).Read" },
31
+ {Err : "io.EOF" , Fun : "(*bytes.Buffer).ReadByte" },
32
+ {Err : "io.EOF" , Fun : "(*bytes.Buffer).ReadBytes" },
33
+ {Err : "io.EOF" , Fun : "(*bytes.Buffer).ReadRune" },
34
+ {Err : "io.EOF" , Fun : "(*bytes.Buffer).ReadString" },
35
+ {Err : "io.EOF" , Fun : "(*bytes.Reader).Read" },
36
+ {Err : "io.EOF" , Fun : "(*bytes.Reader).ReadAt" },
37
+ {Err : "io.EOF" , Fun : "(*bytes.Reader).ReadByte" },
38
+ {Err : "io.EOF" , Fun : "(*bytes.Reader).ReadRune" },
39
+ {Err : "io.EOF" , Fun : "(*bytes.Reader).ReadString" },
40
40
// pkg/database/sql
41
- {err : "database/sql.ErrNoRows" , fun : "(*database/sql.Row).Scan" },
41
+ {Err : "database/sql.ErrNoRows" , Fun : "(*database/sql.Row).Scan" },
42
42
// pkg/debug/elf
43
- {err : "io.EOF" , fun : "debug/elf.Open" },
44
- {err : "io.EOF" , fun : "debug/elf.NewFile" },
43
+ {Err : "io.EOF" , Fun : "debug/elf.Open" },
44
+ {Err : "io.EOF" , Fun : "debug/elf.NewFile" },
45
45
// pkg/io
46
- {err : "io.EOF" , fun : "(io.ReadCloser).Read" },
47
- {err : "io.EOF" , fun : "(io.Reader).Read" },
48
- {err : "io.EOF" , fun : "(io.ReaderAt).ReadAt" },
49
- {err : "io.EOF" , fun : "(*io.LimitedReader).Read" },
50
- {err : "io.EOF" , fun : "(*io.SectionReader).Read" },
51
- {err : "io.EOF" , fun : "(*io.SectionReader).ReadAt" },
52
- {err : "io.ErrClosedPipe" , fun : "(*io.PipeWriter).Write" },
53
- {err : "io.ErrShortBuffer" , fun : "io.ReadAtLeast" },
54
- {err : "io.ErrUnexpectedEOF" , fun : "io.ReadAtLeast" },
55
- {err : "io.EOF" , fun : "io.ReadFull" },
56
- {err : "io.ErrUnexpectedEOF" , fun : "io.ReadFull" },
46
+ {Err : "io.EOF" , Fun : "(io.ReadCloser).Read" },
47
+ {Err : "io.EOF" , Fun : "(io.Reader).Read" },
48
+ {Err : "io.EOF" , Fun : "(io.ReaderAt).ReadAt" },
49
+ {Err : "io.EOF" , Fun : "(*io.LimitedReader).Read" },
50
+ {Err : "io.EOF" , Fun : "(*io.SectionReader).Read" },
51
+ {Err : "io.EOF" , Fun : "(*io.SectionReader).ReadAt" },
52
+ {Err : "io.ErrClosedPipe" , Fun : "(*io.PipeWriter).Write" },
53
+ {Err : "io.ErrShortBuffer" , Fun : "io.ReadAtLeast" },
54
+ {Err : "io.ErrUnexpectedEOF" , Fun : "io.ReadAtLeast" },
55
+ {Err : "io.EOF" , Fun : "io.ReadFull" },
56
+ {Err : "io.ErrUnexpectedEOF" , Fun : "io.ReadFull" },
57
57
// pkg/net/http
58
- {err : "net/http.ErrServerClosed" , fun : "(*net/http.Server).ListenAndServe" },
59
- {err : "net/http.ErrServerClosed" , fun : "(*net/http.Server).ListenAndServeTLS" },
60
- {err : "net/http.ErrServerClosed" , fun : "(*net/http.Server).Serve" },
61
- {err : "net/http.ErrServerClosed" , fun : "(*net/http.Server).ServeTLS" },
62
- {err : "net/http.ErrServerClosed" , fun : "net/http.ListenAndServe" },
63
- {err : "net/http.ErrServerClosed" , fun : "net/http.ListenAndServeTLS" },
64
- {err : "net/http.ErrServerClosed" , fun : "net/http.Serve" },
65
- {err : "net/http.ErrServerClosed" , fun : "net/http.ServeTLS" },
58
+ {Err : "net/http.ErrServerClosed" , Fun : "(*net/http.Server).ListenAndServe" },
59
+ {Err : "net/http.ErrServerClosed" , Fun : "(*net/http.Server).ListenAndServeTLS" },
60
+ {Err : "net/http.ErrServerClosed" , Fun : "(*net/http.Server).Serve" },
61
+ {Err : "net/http.ErrServerClosed" , Fun : "(*net/http.Server).ServeTLS" },
62
+ {Err : "net/http.ErrServerClosed" , Fun : "net/http.ListenAndServe" },
63
+ {Err : "net/http.ErrServerClosed" , Fun : "net/http.ListenAndServeTLS" },
64
+ {Err : "net/http.ErrServerClosed" , Fun : "net/http.Serve" },
65
+ {Err : "net/http.ErrServerClosed" , Fun : "net/http.ServeTLS" },
66
66
// pkg/os
67
- {err : "io.EOF" , fun : "(*os.File).Read" },
68
- {err : "io.EOF" , fun : "(*os.File).ReadAt" },
69
- {err : "io.EOF" , fun : "(*os.File).ReadDir" },
70
- {err : "io.EOF" , fun : "(*os.File).Readdir" },
71
- {err : "io.EOF" , fun : "(*os.File).Readdirnames" },
67
+ {Err : "io.EOF" , Fun : "(*os.File).Read" },
68
+ {Err : "io.EOF" , Fun : "(*os.File).ReadAt" },
69
+ {Err : "io.EOF" , Fun : "(*os.File).ReadDir" },
70
+ {Err : "io.EOF" , Fun : "(*os.File).Readdir" },
71
+ {Err : "io.EOF" , Fun : "(*os.File).Readdirnames" },
72
72
// pkg/strings
73
- {err : "io.EOF" , fun : "(*strings.Reader).Read" },
74
- {err : "io.EOF" , fun : "(*strings.Reader).ReadAt" },
75
- {err : "io.EOF" , fun : "(*strings.Reader).ReadByte" },
76
- {err : "io.EOF" , fun : "(*strings.Reader).ReadRune" },
73
+ {Err : "io.EOF" , Fun : "(*strings.Reader).Read" },
74
+ {Err : "io.EOF" , Fun : "(*strings.Reader).ReadAt" },
75
+ {Err : "io.EOF" , Fun : "(*strings.Reader).ReadByte" },
76
+ {Err : "io.EOF" , Fun : "(*strings.Reader).ReadRune" },
77
77
// pkg/context
78
- {err : "context.DeadlineExceeded" , fun : "(context.Context).Err" },
79
- {err : "context.Canceled" , fun : "(context.Context).Err" },
78
+ {Err : "context.DeadlineExceeded" , Fun : "(context.Context).Err" },
79
+ {Err : "context.Canceled" , Fun : "(context.Context).Err" },
80
80
// pkg/encoding/json
81
- {err : "io.EOF" , fun : "(*encoding/json.Decoder).Decode" },
81
+ {Err : "io.EOF" , Fun : "(*encoding/json.Decoder).Decode" },
82
82
// pkg/encoding/csv
83
- {err : "io.EOF" , fun : "(*encoding/csv.Reader).Read" },
83
+ {Err : "io.EOF" , Fun : "(*encoding/csv.Reader).Read" },
84
84
// pkg/mime/multipart
85
- {err : "io.EOF" , fun : "(*mime/multipart.Reader).NextPart" },
86
- {err : "io.EOF" , fun : "(*mime/multipart.Reader).NextRawPart" },
87
- {err : "mime/multipart.ErrMessageTooLarge" , fun : "(*mime/multipart.Reader).ReadForm" },
85
+ {Err : "io.EOF" , Fun : "(*mime/multipart.Reader).NextPart" },
86
+ {Err : "io.EOF" , Fun : "(*mime/multipart.Reader).NextRawPart" },
87
+ {Err : "mime/multipart.ErrMessageTooLarge" , Fun : "(*mime/multipart.Reader).ReadForm" },
88
88
}
89
89
90
90
var allowedErrorsMap = make (map [string ]map [string ]struct {})
91
91
92
92
func allowedMapAppend (ap []AllowPair ) {
93
93
for _ , pair := range ap {
94
- if _ , ok := allowedErrorsMap [pair .err ]; ! ok {
95
- allowedErrorsMap [pair .err ] = make (map [string ]struct {})
94
+ if _ , ok := allowedErrorsMap [pair .Err ]; ! ok {
95
+ allowedErrorsMap [pair .Err ] = make (map [string ]struct {})
96
96
}
97
- allowedErrorsMap [pair.err ][pair.fun ] = struct {}{}
97
+ allowedErrorsMap [pair.Err ][pair.Fun ] = struct {}{}
98
98
}
99
99
}
100
100
101
101
var allowedErrorWildcards = []AllowPair {
102
102
// pkg/syscall
103
- {err : "syscall.E" , fun : "syscall." },
103
+ {Err : "syscall.E" , Fun : "syscall." },
104
104
// golang.org/x/sys/unix
105
- {err : "golang.org/x/sys/unix.E" , fun : "golang.org/x/sys/unix." },
105
+ {Err : "golang.org/x/sys/unix.E" , Fun : "golang.org/x/sys/unix." },
106
106
}
107
107
108
108
func allowedWildcardAppend (ap []AllowPair ) {
@@ -117,7 +117,7 @@ func isAllowedErrAndFunc(err, fun string) bool {
117
117
}
118
118
119
119
for _ , allow := range allowedErrorWildcards {
120
- if strings .HasPrefix (fun , allow .fun ) && strings .HasPrefix (err , allow .err ) {
120
+ if strings .HasPrefix (fun , allow .Fun ) && strings .HasPrefix (err , allow .Err ) {
121
121
return true
122
122
}
123
123
}
0 commit comments