|
|
@@ -1660,3 +1660,20 @@ func TestTransportRejectsConnHeaders(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// Tests that gzipReader doesn't crash on a second Read call following
|
|
|
+// the first Read call's gzip.NewReader returning an error.
|
|
|
+func TestGzipReader_DoubleReadCrash(t *testing.T) {
|
|
|
+ gz := &gzipReader{
|
|
|
+ body: ioutil.NopCloser(strings.NewReader("0123456789")),
|
|
|
+ }
|
|
|
+ var buf [1]byte
|
|
|
+ n, err1 := gz.Read(buf[:])
|
|
|
+ if n != 0 || !strings.Contains(fmt.Sprint(err1), "invalid header") {
|
|
|
+ t.Fatalf("Read = %v, %v; want 0, invalid header", n, err1)
|
|
|
+ }
|
|
|
+ n, err2 := gz.Read(buf[:])
|
|
|
+ if n != 0 || err2 != err1 {
|
|
|
+ t.Fatalf("second Read = %v, %v; want 0, %v", n, err2, err1)
|
|
|
+ }
|
|
|
+}
|