aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/mount.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-03 15:35:32 +0900
committerOphestra <cat@gensokyo.uk>2025-08-03 17:46:14 +0900
commitff662963781c0b9e32c85c6cf725533b61af2bc7 (patch)
treecbdda7968c47629b2fe72daf92537d50ebab6f3b /container/mount.go
parent347a79df721e37e09b19c206f43a48e17cb97463 (diff)
container/mount: mount data escape helper function
For formatting user-supplied path strings into overlayfs mount data. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/mount.go')
-rw-r--r--container/mount.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/container/mount.go b/container/mount.go
index 7ee614b4..fc0e177f 100644
--- a/container/mount.go
+++ b/container/mount.go
@@ -5,6 +5,7 @@ import (
"fmt"
"os"
"path/filepath"
+ "strings"
. "syscall"
"hakurei.app/container/vfs"
@@ -183,3 +184,20 @@ func parentPerm(perm os.FileMode) os.FileMode {
}
return os.FileMode(pperm)
}
+
+// escapeOverlayDataSegment escapes a string for formatting into the data argument of an overlay mount call.
+func escapeOverlayDataSegment(s string) string {
+ if s == zeroString {
+ return zeroString
+ }
+
+ if f := strings.SplitN(s, "\x00", 2); len(f) > 0 {
+ s = f[0]
+ }
+
+ return strings.NewReplacer(
+ `\`, `\\`,
+ `,`, `\,`,
+ `:`, `\:`,
+ ).Replace(s)
+}