diff --git a/filesystem/iso9660/finalize_test.go b/filesystem/iso9660/finalize_test.go index 408221f..a51e4c6 100644 --- a/filesystem/iso9660/finalize_test.go +++ b/filesystem/iso9660/finalize_test.go @@ -23,6 +23,25 @@ var ( // test creating an iso with el torito boot func TestFinalizeElTorito(t *testing.T) { + finalizeElTorito(t, "") + dir, err := os.MkdirTemp("", "workspace") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + finalizeElTorito(t, dir) +} + +func TestFinalizeElToritoWithInaccurateTmpDir(t *testing.T) { + finalizeElTorito(t, "") + dir, err := os.MkdirTemp("/tmp//", "workspace") + if err != nil { + t.Fatalf("Failed to create temp dir: %v", err) + } + finalizeElTorito(t, dir) +} + +//nolint:thelper // this is not a helper function +func finalizeElTorito(t *testing.T, workspace string) { blocksize := int64(2048) f, err := os.CreateTemp("", "iso_finalize_test") defer os.Remove(f.Name()) @@ -31,7 +50,7 @@ func TestFinalizeElTorito(t *testing.T) { } b := file.New(f, false) - fs, err := iso9660.Create(b, 0, 0, blocksize, "") + fs, err := iso9660.Create(b, 0, 0, blocksize, workspace) if err != nil { t.Fatalf("Failed to iso9660.Create: %v", err) } diff --git a/filesystem/iso9660/iso9660.go b/filesystem/iso9660/iso9660.go index fcfda3b..1c4e67a 100644 --- a/filesystem/iso9660/iso9660.go +++ b/filesystem/iso9660/iso9660.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "path" + "path/filepath" "github.com/diskfs/go-diskfs/backend" "github.com/diskfs/go-diskfs/filesystem" @@ -97,6 +98,9 @@ func Create(b backend.Storage, size, start, blocksize int64, workspace string) ( } } + // sometimes, at least on macos, extra separators in path can cause panic + workdir = filepath.Clean(workdir) + // create root directory // there is nothing in there return &FileSystem{