Closed
Description
The following program fails with the panic:
package main
import (
"archive/zip"
"bytes"
"io/ioutil"
)
func main() {
headers := []zip.FileHeader{
{Name:"0", Method:8},
{Name:"1", Method:8},
}
contents := [][]byte{
[]byte("a"),
[]byte("abcdefgh01234567890"),
}
buf := new(bytes.Buffer)
w := zip.NewWriter(buf)
for i, h := range headers {
w1, err := w.CreateHeader(&h)
if err != nil {
panic(err)
}
_, err = w1.Write(contents[i])
if err != nil {
panic(err)
}
}
err := w.Close()
if err != nil {
panic(err)
}
z1, err := zip.NewReader(bytes.NewReader(buf.Bytes()), int64(len(buf.Bytes())))
if err != nil {
panic(err)
}
var headers1 []zip.FileHeader
var contents1 [][]byte
for _, f := range z1.File {
r, err := f.Open()
if err != nil {
panic(err)
}
c, err := ioutil.ReadAll(r)
if err != nil {
panic(err)
}
headers1 = append(headers1, f.FileHeader)
contents1 = append(contents1, c)
r.Close()
}
}
panic: unexpected EOF
goroutine 1 [running]:
main.main()
zip.go:48 +0x8f8
go version devel +b0532a9 Mon Jun 8 05:13:15 2015 +0000 linux/amd64