aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/check/overlay.go
diff options
context:
space:
mode:
Diffstat (limited to 'container/check/overlay.go')
-rw-r--r--container/check/overlay.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/container/check/overlay.go b/container/check/overlay.go
new file mode 100644
index 00000000..ab907fbd
--- /dev/null
+++ b/container/check/overlay.go
@@ -0,0 +1,29 @@
+package check
+
+import "strings"
+
+const (
+ // SpecialOverlayEscape is the escape string for overlay mount options.
+ SpecialOverlayEscape = `\`
+ // SpecialOverlayOption is the separator string between overlay mount options.
+ SpecialOverlayOption = ","
+ // SpecialOverlayPath is the separator string between overlay paths.
+ SpecialOverlayPath = ":"
+)
+
+// EscapeOverlayDataSegment escapes a string for formatting into the data argument of an overlay mount call.
+func EscapeOverlayDataSegment(s string) string {
+ if s == "" {
+ return ""
+ }
+
+ if f := strings.SplitN(s, "\x00", 2); len(f) > 0 {
+ s = f[0]
+ }
+
+ return strings.NewReplacer(
+ SpecialOverlayEscape, SpecialOverlayEscape+SpecialOverlayEscape,
+ SpecialOverlayOption, SpecialOverlayEscape+SpecialOverlayOption,
+ SpecialOverlayPath, SpecialOverlayEscape+SpecialOverlayPath,
+ ).Replace(s)
+}