summaryrefslogtreecommitdiff
path: root/pkg/symlink/fs.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/symlink/fs.go')
-rw-r--r--pkg/symlink/fs.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/pkg/symlink/fs.go b/pkg/symlink/fs.go
index 257491f91b..da9c590675 100644
--- a/pkg/symlink/fs.go
+++ b/pkg/symlink/fs.go
@@ -13,8 +13,6 @@ const maxLoopCounter = 100
// FollowSymlink will follow an existing link and scope it to the root
// path provided.
func FollowSymlinkInScope(link, root string) (string, error) {
- prev := "/"
-
root, err := filepath.Abs(root)
if err != nil {
return "", err
@@ -25,10 +23,16 @@ func FollowSymlinkInScope(link, root string) (string, error) {
return "", err
}
+ if link == root {
+ return root, nil
+ }
+
if !strings.HasPrefix(filepath.Dir(link), root) {
return "", fmt.Errorf("%s is not within %s", link, root)
}
+ prev := "/"
+
for _, p := range strings.Split(link, "/") {
prev = filepath.Join(prev, p)
prev = filepath.Clean(prev)