diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-20 19:29:45 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-20 19:29:45 +0900 |
| commit | c6397b941fe0c07795d8fd8615c37268c08082cd (patch) | |
| tree | a85acbeb1e8abb1c9d9f4ced094358acd3123033 | |
| parent | d65e5f817aaf173ed5c61a0509de5089ae52e9e9 (diff) | |
container/initproc: check path equivalence by value
Fixes regression introduced while integrating Absolute.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | container/initproc.go | 3 | ||||
| -rw-r--r-- | container/initproc_test.go | 32 |
2 files changed, 34 insertions, 1 deletions
diff --git a/container/initproc.go b/container/initproc.go index 150702ad..d3c37535 100644 --- a/container/initproc.go +++ b/container/initproc.go @@ -35,7 +35,8 @@ func (p *MountProcOp) apply(state *setupState) error { func (p *MountProcOp) Is(op Op) bool { vp, ok := op.(*MountProcOp) - return ok && ((p == nil && vp == nil) || p == vp) + return ok && ((p == nil && vp == nil) || + (p.Target != nil && vp.Target != nil && p.Target.Is(vp.Target))) } func (*MountProcOp) prefix() string { return "mounting" } func (p *MountProcOp) String() string { return fmt.Sprintf("proc on %q", p.Target) } diff --git a/container/initproc_test.go b/container/initproc_test.go new file mode 100644 index 00000000..fe37732f --- /dev/null +++ b/container/initproc_test.go @@ -0,0 +1,32 @@ +package container + +import "testing" + +func TestMountProcOp(t *testing.T) { + checkOpsBuilder(t, []opsBuilderTestCase{ + {"proc", new(Ops).Proc(MustAbs("/proc/")), Ops{ + &MountProcOp{Target: MustAbs("/proc/")}, + }}, + }) + + checkOpIs(t, []opIsTestCase{ + {"zero", new(MountProcOp), new(MountProcOp), false}, + + {"target differs", &MountProcOp{ + Target: MustAbs("/proc/nonexistent"), + }, &MountProcOp{ + Target: MustAbs("/proc/"), + }, false}, + + {"equals", &MountProcOp{ + Target: MustAbs("/proc/"), + }, &MountProcOp{ + Target: MustAbs("/proc/"), + }, true}, + }) + + checkOpMeta(t, []opMetaTestCase{ + {"proc", &MountProcOp{Target: MustAbs("/proc/")}, + "mounting", `proc on "/proc/"`}, + }) +} |
