summaryrefslogtreecommitdiffhomepage
path: root/runsc/boot
diff options
context:
space:
mode:
authorNicolas Lacasse <nlacasse@google.com>2019-02-01 15:22:22 -0800
committerShentubot <shentubot@google.com>2019-02-01 15:23:43 -0800
commit92e85623a0cd7b2043a79b757e1874a67796dea9 (patch)
tree5a9883da502e64fd0726c62f2e3de2f2c9d87ef0 /runsc/boot
parentfe1369ac98a4f1d8af5e8be6da71165339e52034 (diff)
Factor the subtargets method into a helper method with tests.
PiperOrigin-RevId: 232047515 Change-Id: I00f036816e320356219be7b2f2e6d5fe57583a60
Diffstat (limited to 'runsc/boot')
-rw-r--r--runsc/boot/fs.go14
1 files changed, 2 insertions, 12 deletions
diff --git a/runsc/boot/fs.go b/runsc/boot/fs.go
index 5c5e650ca..ada292c9e 100644
--- a/runsc/boot/fs.go
+++ b/runsc/boot/fs.go
@@ -515,20 +515,10 @@ func addSubmountOverlay(ctx context.Context, inode *fs.Inode, submounts []string
// subtargets takes a set of Mounts and returns only the targets that are
// children of the given root. The returned paths are relative to the root.
func subtargets(root string, mnts []specs.Mount) []string {
- r := filepath.Clean(root)
- if len(r) > 0 && r[len(r)-1] != '/' {
- r += "/"
- }
var targets []string
for _, mnt := range mnts {
- t := filepath.Clean(mnt.Destination)
- if strings.HasPrefix(t, r) {
- // Make the mnt path relative to the root path. If the
- // result is empty, then mnt IS the root mount, not a
- // submount. We don't want to include those.
- if t := strings.TrimPrefix(t, r); t != "" {
- targets = append(targets, t)
- }
+ if relPath, isSubpath := fs.IsSubpath(mnt.Destination, root); isSubpath {
+ targets = append(targets, relPath)
}
}
return targets