Skip to content

Commit 3978049

Browse files
authored
Merge pull request #443 from dolmen-go/more-Base64LineBreaker-fuzzing
More Base64LineBreaker fuzzing
2 parents 24dad49 + 12e837f commit 3978049

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

b64linebreaker_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,20 +233,28 @@ func FuzzBase64LineBreaker(f *testing.F) {
233233
{0o0, 0o1, 0o2, 30, 255},
234234
}
235235
for _, data := range seedData {
236-
f.Add(data)
236+
f.Add(data, len(data))
237+
f.Add(data, 1)
237238
}
238239

239-
f.Fuzz(func(t *testing.T, data []byte) {
240+
f.Fuzz(func(t *testing.T, data []byte, chunkSize int) {
241+
if chunkSize <= 0 || chunkSize > len(data)+1 {
242+
return
243+
}
240244
buffer := bytes.NewBuffer(nil)
241245
lineBreaker := &Base64LineBreaker{
242246
out: buffer,
243247
}
244248
base64Encoder := base64.NewEncoder(base64.StdEncoding, lineBreaker)
245249

246-
_, err := base64Encoder.Write(data)
250+
chunk := make([]byte, chunkSize)
251+
n, err := io.CopyBuffer(base64Encoder, bytes.NewReader(data), chunk)
247252
if err != nil {
248253
t.Errorf("failed to write test data to base64 encoder: %s", err)
249254
}
255+
if n != int64(len(data)) {
256+
t.Errorf("unexpected written bytes count: got %d, expected %d", n, len(data))
257+
}
250258
if err = base64Encoder.Close(); err != nil {
251259
t.Errorf("failed to close base64 encoder: %s", err)
252260
}

0 commit comments

Comments
 (0)