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 d91b8bcf0b
2 changed files with 20 additions and 2 deletions

View file

@ -946,3 +946,17 @@ func TestModeHostname(t *testing.T) {
logDone("run - hostname and several network modes")
}
func TestRootWorkdir(t *testing.T) {
s, _, err := cmd(t, "run", "--workdir", "/", "busybox", "pwd")
if err != nil {
t.Fatal(s, err)
}
if s != "/\n" {
t.Fatalf("pwd returned '%s' (expected /\\n)", s)
}
deleteAllContainers()
logDone("run - workdir /")
}

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)