aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-20 19:29:45 +0900
committerOphestra <cat@gensokyo.uk>2025-08-20 19:29:45 +0900
commitc6397b941fe0c07795d8fd8615c37268c08082cd (patch)
treea85acbeb1e8abb1c9d9f4ced094358acd3123033
parentd65e5f817aaf173ed5c61a0509de5089ae52e9e9 (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.go3
-rw-r--r--container/initproc_test.go32
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/"`},
+ })
+}