aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/mount.go
diff options
context:
space:
mode:
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)
+}