Skip to content

Commit e8e6dd0

Browse files
committed
fix(coderd): set mode and modtime correctly when converting from zip->tar
1 parent 51dd5a0 commit e8e6dd0

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

coderd/fileszip.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"errors"
88
"io"
99
"log"
10+
"strings"
1011
)
1112

1213
func CreateTarFromZip(zipReader *zip.Reader) ([]byte, error) {
@@ -38,10 +39,20 @@ func processFileInZipArchive(file *zip.File, tarWriter *tar.Writer) error {
3839
}
3940
defer fileReader.Close()
4041

42+
mode := int64(0o644)
43+
if strings.HasSuffix(file.Name, "/") {
44+
// directory
45+
mode = 0o755
46+
}
47+
4148
err = tarWriter.WriteHeader(&tar.Header{
42-
Name: file.Name,
43-
Size: file.FileInfo().Size(),
44-
Mode: 0o644,
49+
Name: file.Name,
50+
Size: file.FileInfo().Size(),
51+
Mode: mode,
52+
ModTime: file.Modified,
53+
// Note: Zip archives do not store ownership information.
54+
Uid: 1000,
55+
Gid: 1000,
4556
})
4657
if err != nil {
4758
return err

0 commit comments

Comments
 (0)