Skip to content

Commit a77da84

Browse files
authored
fix: Resolve symlinks being written with size 0 in tar (coder#1488)
Solution found here: https://stackoverflow.com/questions/38454850/getting-write-too-long-error-when-trying-to-create-tar-gz-file-from-file-and-d Symlink's were being written with a size of 0, which surfaced an error for write too long.
1 parent 680de70 commit a77da84

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

provisionersdk/archive.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,14 @@ func Tar(directory string, limit int64) ([]byte, error) {
2525
if err != nil {
2626
return err
2727
}
28-
header, err := tar.FileInfoHeader(fileInfo, file)
28+
var link string
29+
if fileInfo.Mode()&os.ModeSymlink == os.ModeSymlink {
30+
link, err = os.Readlink(file)
31+
if err != nil {
32+
return err
33+
}
34+
}
35+
header, err := tar.FileInfoHeader(fileInfo, link)
2936
if err != nil {
3037
return err
3138
}
@@ -45,7 +52,7 @@ func Tar(directory string, limit int64) ([]byte, error) {
4552
if err := tarWriter.WriteHeader(header); err != nil {
4653
return err
4754
}
48-
if fileInfo.IsDir() {
55+
if !fileInfo.Mode().IsRegular() {
4956
return nil
5057
}
5158
data, err := os.Open(file)

0 commit comments

Comments
 (0)