Skip to content

Commit 99dfb70

Browse files
Merge pull request #16268 from mikewwwperry/main
Closes: 15858 (podman system reset --force destroy machine)
2 parents a77ac5b + 0572e59 commit 99dfb70

File tree

5 files changed

+17
-7
lines changed

5 files changed

+17
-7
lines changed

pkg/machine/config.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package machine
55

66
import (
77
"errors"
8+
"fmt"
89
"net"
910
"net/url"
1011
"os"
@@ -237,6 +238,15 @@ func ConfDirPrefix() (string, error) {
237238
return confDir, nil
238239
}
239240

241+
// GuardedRemoveAll functions much like os.RemoveAll but
242+
// will not delete certain catastrophic paths.
243+
func GuardedRemoveAll(path string) error {
244+
if path == "" || path == "/" {
245+
return fmt.Errorf("refusing to recusively delete `%s`", path)
246+
}
247+
return os.RemoveAll(path)
248+
}
249+
240250
// ResourceConfig describes physical attributes of the machine
241251
type ResourceConfig struct {
242252
// CPUs to be assigned to the VM

pkg/machine/e2e/init_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ var _ = Describe("podman machine init", func() {
142142
_, err = os.CreateTemp(tmpDir, "example")
143143
Expect(err).To(BeNil())
144144
mount := tmpDir + ":/testmountdir"
145-
defer os.RemoveAll(tmpDir)
145+
defer func() { _ = machine.GuardedRemoveAll(tmpDir) }()
146146

147147
name := randomString()
148148
i := new(initMachine)

pkg/machine/e2e/machine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func teardown(origHomeDir string, testDir string, mb *machineTestBuilder) {
128128
fmt.Printf("error occurred rm'ing machine: %q\n", err)
129129
}
130130
}
131-
if err := os.RemoveAll(testDir); err != nil {
131+
if err := machine.GuardedRemoveAll(testDir); err != nil {
132132
Fail(fmt.Sprintf("failed to remove test dir: %q", err))
133133
}
134134
// this needs to be last in teardown

pkg/machine/qemu/machine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1690,7 +1690,7 @@ func (p *Provider) RemoveAndCleanMachines() error {
16901690
}
16911691
prevErr = err
16921692
} else {
1693-
err := os.RemoveAll(dataDir)
1693+
err := machine.GuardedRemoveAll(dataDir)
16941694
if err != nil {
16951695
if prevErr != nil {
16961696
logrus.Error(prevErr)
@@ -1707,7 +1707,7 @@ func (p *Provider) RemoveAndCleanMachines() error {
17071707
}
17081708
prevErr = err
17091709
} else {
1710-
err := os.RemoveAll(confDir)
1710+
err := machine.GuardedRemoveAll(confDir)
17111711
if err != nil {
17121712
if prevErr != nil {
17131713
logrus.Error(prevErr)

pkg/machine/wsl/machine.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,7 +1339,7 @@ func (v *MachineVM) Remove(name string, opts machine.RemoveOptions) (string, fun
13391339
logrus.Error(err)
13401340
}
13411341
for _, f := range files {
1342-
if err := os.RemoveAll(f); err != nil {
1342+
if err := machine.GuardedRemoveAll(f); err != nil {
13431343
logrus.Error(err)
13441344
}
13451345
}
@@ -1644,7 +1644,7 @@ func (p *Provider) RemoveAndCleanMachines() error {
16441644
}
16451645
prevErr = err
16461646
} else {
1647-
err := os.RemoveAll(dataDir)
1647+
err := machine.GuardedRemoveAll(dataDir)
16481648
if err != nil {
16491649
if prevErr != nil {
16501650
logrus.Error(prevErr)
@@ -1661,7 +1661,7 @@ func (p *Provider) RemoveAndCleanMachines() error {
16611661
}
16621662
prevErr = err
16631663
} else {
1664-
err := os.RemoveAll(confDir)
1664+
err := machine.GuardedRemoveAll(confDir)
16651665
if err != nil {
16661666
if prevErr != nil {
16671667
logrus.Error(prevErr)

0 commit comments

Comments
 (0)