diff options
Diffstat (limited to 'container/mount.go')
| -rw-r--r-- | container/mount.go | 18 |
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) +} |
