From dea5d380bf3e5f8921aebd7a7fe3239104bac44c Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Mon, 4 Mar 2019 17:55:12 -0800 Subject: [PATCH] go-fuzz: don't drop data when Read also returns an error The io.Reader contract specifies that Read may return n > 0 and err != nil, and that in that scenario, the caller should process those n bytes. This is rare enough that it probably wasn't causing an actual problem. Fix it nevertheless; one fewer latent bug. --- go-fuzz/testee.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go-fuzz/testee.go b/go-fuzz/testee.go index c0f87aef3..9cb0294b0 100644 --- a/go-fuzz/testee.go +++ b/go-fuzz/testee.go @@ -198,9 +198,6 @@ retry: case <-t.downC: } n, err := t.stdoutPipe.Read(data[filled:]) - if err != nil { - break - } if *flagV >= 3 { log.Printf("testee: %v\n", string(data[filled:filled+n])) } @@ -209,6 +206,9 @@ retry: copy(data, data[testeeBufferSize/2:filled]) filled -= testeeBufferSize / 2 } + if err != nil { + break + } } ticker.Stop() trimmed := make([]byte, filled)