Skip to content

Commit 808bac2

Browse files
committed
Fix panic when tmp path is inccurate (like with double separators which still valid) and add test-case for it
Signed-off-by: s1gnate-sync <[email protected]>
1 parent c926038 commit 808bac2

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

filesystem/iso9660/finalize_test.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,23 @@ var (
2323

2424
// test creating an iso with el torito boot
2525
func TestFinalizeElTorito(t *testing.T) {
26+
finalizeElTorito(t, "")
27+
dir, err := os.MkdirTemp("", "workspace")
28+
if err != nil {
29+
t.Fatalf("Failed to create temp dir: %v", err)
30+
}
31+
finalizeElTorito(t, dir)
32+
}
33+
func TestFinalizeElToritoWithInaccurateTmpDir(t *testing.T) {
34+
finalizeElTorito(t, "")
35+
dir, err := os.MkdirTemp("/tmp//", "workspace")
36+
if err != nil {
37+
t.Fatalf("Failed to create temp dir: %v", err)
38+
}
39+
finalizeElTorito(t, dir)
40+
}
41+
42+
func finalizeElTorito(t *testing.T, workspace string) {
2643
blocksize := int64(2048)
2744
f, err := os.CreateTemp("", "iso_finalize_test")
2845
defer os.Remove(f.Name())
@@ -31,7 +48,7 @@ func TestFinalizeElTorito(t *testing.T) {
3148
}
3249

3350
b := file.New(f, false)
34-
fs, err := iso9660.Create(b, 0, 0, blocksize, "")
51+
fs, err := iso9660.Create(b, 0, 0, blocksize, workspace)
3552
if err != nil {
3653
t.Fatalf("Failed to iso9660.Create: %v", err)
3754
}

filesystem/iso9660/iso9660.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"os"
77
"path"
8+
"path/filepath"
89

910
"github.com/diskfs/go-diskfs/backend"
1011
"github.com/diskfs/go-diskfs/filesystem"
@@ -97,6 +98,9 @@ func Create(b backend.Storage, size, start, blocksize int64, workspace string) (
9798
}
9899
}
99100

101+
// sometimes, at least on macos, extra separators in path can cause panic
102+
workdir = filepath.Clean(workdir)
103+
100104
// create root directory
101105
// there is nothing in there
102106
return &FileSystem{

0 commit comments

Comments
 (0)