Skip to content

Commit 8178918

Browse files
committed
fix: engine - set 777 permissions for temp dir (#6)
1 parent 314987a commit 8178918

File tree

3 files changed

+55
-4
lines changed

3 files changed

+55
-4
lines changed

internal/engine/docker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func NewDocker(cfg *config.Config, sandbox, command string) Engine {
4242
// Exec executes the command and returns the output.
4343
func (e *Docker) Exec(req Request) Execution {
4444
// all steps operate in the same temp directory
45-
dir, err := os.MkdirTemp("", "")
45+
dir, err := fileio.MkdirTemp(0777)
4646
if err != nil {
4747
err = NewExecutionError("create temp dir", err)
4848
return Fail(req.ID, err)

internal/fileio/fileio.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,18 @@ func WriteFile(path, content string, perm fs.FileMode) (err error) {
7878
}
7979
return os.WriteFile(path, data, perm)
8080
}
81+
82+
// MkdirTemp creates a new temporary directory with given permissions
83+
// and returns the pathname of the new directory.
84+
func MkdirTemp(perm fs.FileMode) (string, error) {
85+
dir, err := os.MkdirTemp("", "")
86+
if err != nil {
87+
return "", err
88+
}
89+
err = os.Chmod(dir, perm)
90+
if err != nil {
91+
os.Remove(dir)
92+
return "", err
93+
}
94+
return dir, nil
95+
}

internal/fileio/fileio_test.go

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func TestWriteFile(t *testing.T) {
128128
})
129129

130130
t.Run("perm", func(t *testing.T) {
131-
const perm = fs.FileMode(0444)
131+
const perm = 0444
132132
path := filepath.Join(dir, "perm.txt")
133133
err = WriteFile(path, "hello", perm)
134134
if err != nil {
@@ -138,8 +138,8 @@ func TestWriteFile(t *testing.T) {
138138
if err != nil {
139139
t.Fatalf("file not created: %s", err)
140140
}
141-
if fileInfo.Mode() != perm {
142-
t.Errorf("unexpected file permissions: got %v, want %v", fileInfo.Mode(), perm)
141+
if fileInfo.Mode().Perm() != perm {
142+
t.Errorf("unexpected file permissions: expected %o, got %o", perm, fileInfo.Mode().Perm())
143143
}
144144
})
145145

@@ -159,3 +159,39 @@ func TestWriteFile(t *testing.T) {
159159
}
160160
})
161161
}
162+
163+
func TestMkdirTemp(t *testing.T) {
164+
t.Run("default permissions", func(t *testing.T) {
165+
const perm = 0755
166+
dir, err := MkdirTemp(perm)
167+
if err != nil {
168+
t.Fatalf("failed to create temp directory: %v", err)
169+
}
170+
defer os.Remove(dir)
171+
172+
info, err := os.Stat(dir)
173+
if err != nil {
174+
t.Fatalf("failed to stat temp directory: %v", err)
175+
}
176+
if info.Mode().Perm() != perm {
177+
t.Errorf("unexpected permissions: expected %o, got %o", perm, info.Mode().Perm())
178+
}
179+
})
180+
181+
t.Run("non-default permissions", func(t *testing.T) {
182+
const perm = 0777
183+
dir, err := MkdirTemp(perm)
184+
if err != nil {
185+
t.Fatalf("failed to create temp directory: %v", err)
186+
}
187+
defer os.Remove(dir)
188+
189+
info, err := os.Stat(dir)
190+
if err != nil {
191+
t.Fatalf("failed to stat temp directory: %v", err)
192+
}
193+
if info.Mode().Perm() != perm {
194+
t.Errorf("unexpected permissions: expected %o, got %o", perm, info.Mode().Perm())
195+
}
196+
})
197+
}

0 commit comments

Comments
 (0)