aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-03-17 21:53:31 +0900
committerOphestra <cat@gensokyo.uk>2025-03-17 21:53:31 +0900
commit07181138e5abdf78dfcd6e9100362349ec4a81e8 (patch)
tree146e5a18da424c6345aa7d5d0a345d2eee314e87
parent816b372f145738bbdbd59df7110254993cd75cba (diff)
sandbox/mount: pass absolute path
This should never be used unless there is a good reason to, like using a file in the intermediate root. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--sandbox/mount.go8
-rw-r--r--sandbox/sequential.go2
2 files changed, 7 insertions, 3 deletions
diff --git a/sandbox/mount.go b/sandbox/mount.go
index e2cc2907..216a5854 100644
--- a/sandbox/mount.go
+++ b/sandbox/mount.go
@@ -11,9 +11,11 @@ import (
const (
BindOptional = 1 << iota
BindSource
- BindRecursive
BindWritable
BindDevice
+
+ bindAbsolute
+ bindRecursive
)
func bindMount(src, dest string, flags int) error {
@@ -39,6 +41,8 @@ func bindMount(src, dest string, flags int) error {
} else if flags&BindOptional != 0 {
return msg.WrapErr(syscall.EINVAL,
"flag source excludes optional")
+ } else if flags&bindAbsolute != 0 {
+ source = src
} else {
source = toHost(src)
}
@@ -60,7 +64,7 @@ func bindMount(src, dest string, flags int) error {
}
var mf uintptr = syscall.MS_SILENT | syscall.MS_BIND
- if flags&BindRecursive != 0 {
+ if flags&bindRecursive != 0 {
mf |= syscall.MS_REC
}
if flags&BindWritable == 0 {
diff --git a/sandbox/sequential.go b/sandbox/sequential.go
index 2a38c89b..1ffe4e7e 100644
--- a/sandbox/sequential.go
+++ b/sandbox/sequential.go
@@ -36,7 +36,7 @@ func (b *BindMount) String() string {
return fmt.Sprintf("%q on %q flags %#x", b.Source, b.Target, b.Flags&BindWritable)
}
func (f *Ops) Bind(source, target string, flags int) *Ops {
- *f = append(*f, &BindMount{source, target, flags | BindRecursive})
+ *f = append(*f, &BindMount{source, target, flags | bindRecursive})
return f
}