Merge pull request #6646 from tiborvass/fix-workdir

Fix --workdir=/
This commit is contained in:
Michael Crosby 2014-06-25 15:19:51 -07:00
commit e18289a2c0

View file

@ -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)