smtp: add data reader fuzzer + fix OOB read

This commit is contained in:
Martin Holst Swende 2025-03-06 09:57:13 +01:00
parent 44d37892b8
commit f10bb2c1ae
No known key found for this signature in database
GPG Key ID: 683B438C05A5DDF0
2 changed files with 7 additions and 1 deletions

View File

@ -135,7 +135,7 @@ func (r *DataReader) Read(p []byte) (int, error) {
if len(r.buf) > 0 { if len(r.buf) > 0 {
// Reject bare \r. // Reject bare \r.
for i, c := range r.buf { for i, c := range r.buf {
if c == '\r' && (i == len(r.buf) || r.buf[i+1] != '\n') { if c == '\r' && (i == len(r.buf)-1 || r.buf[i+1] != '\n') {
r.badcrlf = true r.badcrlf = true
} }
} }

View File

@ -153,3 +153,9 @@ func (r *oneReader) Read(buf []byte) (int, error) {
r.buf = r.buf[1:] r.buf = r.buf[1:]
return 1, nil return 1, nil
} }
func FuzzReader(f *testing.F) {
f.Fuzz(func(t *testing.T, data string) {
io.ReadAll(NewDataReader(bufio.NewReader(strings.NewReader(data))))
})
}