diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-03 15:35:32 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-03 17:46:14 +0900 |
| commit | ff662963781c0b9e32c85c6cf725533b61af2bc7 (patch) | |
| tree | cbdda7968c47629b2fe72daf92537d50ebab6f3b /container/mount.go | |
| parent | 347a79df721e37e09b19c206f43a48e17cb97463 (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.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) +} |
