Skip to content

Commit bd79335

Browse files
kolyshkinpolyfloyd
authored andcommitted
fix: ignore io.EOF from some more sources
debug/elf.Open and debug/elf.NewFile uses io.ReaderAt and return its error verbatim. Added function and methods from io package are documented to return EOF. Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent 2682847 commit bd79335

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

errorlint/allowed.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,15 @@ var allowedErrors = []struct {
3535
{err: "io.EOF", fun: "(*bytes.Reader).ReadString"},
3636
// pkg/database/sql
3737
{err: "sql.ErrNoRows", fun: "(*database/sql.Row).Scan"},
38+
// pkg/debug/elf
39+
{err: "io.EOF", fun: "elf.Open"},
40+
{err: "io.EOF", fun: "elf.NewFile"},
3841
// pkg/io
3942
{err: "io.EOF", fun: "(io.Reader).Read"},
43+
{err: "io.EOF", fun: "(io.ReaderAt).ReadAt"},
44+
{err: "io.EOF", fun: "(*io.LimitedReader).Read"},
45+
{err: "io.EOF", fun: "(*io.SectionReader).Read"},
46+
{err: "io.EOF", fun: "(*io.SectionReader).ReadAt"},
4047
{err: "io.ErrClosedPipe", fun: "(*io.PipeWriter).Write"},
4148
{err: "io.ErrShortBuffer", fun: "io.ReadAtLeast"},
4249
{err: "io.ErrUnexpectedEOF", fun: "io.ReadAtLeast"},

errorlint/testdata/src/allowed/allowed.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"archive/tar"
55
"bytes"
66
"database/sql"
7+
"debug/elf"
78
"errors"
89
"fmt"
910
"io"
@@ -111,6 +112,48 @@ func IoReadFull(r io.Reader) {
111112
}
112113
}
113114

115+
func IoReaderAt(r io.ReaderAt) {
116+
var buf [4096]byte
117+
_, err := r.ReadAt(buf[:], 0)
118+
if err == io.EOF {
119+
fmt.Println(err)
120+
}
121+
}
122+
123+
func IoLimitedReader(r *io.LimitedReader) {
124+
var buf [4096]byte
125+
_, err := r.Read(buf[:])
126+
if err == io.EOF {
127+
fmt.Println(err)
128+
}
129+
}
130+
131+
func IoSectionReader(r *io.SectionReader) {
132+
var buf [4096]byte
133+
_, err := r.Read(buf[:])
134+
if err == io.EOF {
135+
fmt.Println(err)
136+
}
137+
_, err = r.ReadAt(buf[:], 0)
138+
if err == io.EOF {
139+
fmt.Println(err)
140+
}
141+
}
142+
143+
func ElfOpen() {
144+
_, err := elf.Open("file")
145+
if err == io.EOF {
146+
fmt.Println(err)
147+
}
148+
}
149+
150+
func ElfNewFile(r io.ReaderAt) {
151+
_, err := elf.NewFile(r)
152+
if err == io.EOF {
153+
fmt.Println(err)
154+
}
155+
}
156+
114157
func SqlRowScan(db *sql.DB) {
115158
var i int
116159
row := db.QueryRow(`SELECT 1`)

0 commit comments

Comments
 (0)