Skip to content

Commit

Permalink
Merge pull request #4 from moby/20.10-GHSA-v994-f8vw-g7j4-chroot-mkdir
Browse files Browse the repository at this point in the history
[20.10] chrootarchive: don't create parent dirs outside of chroot
  • Loading branch information
thaJeztah committed Sep 9, 2021
2 parents f0ab919 + 80f1169 commit bce32e5
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions pkg/chrootarchive/archive.go
Expand Up @@ -74,13 +74,17 @@ func untarHandler(tarArchive io.Reader, dest string, options *archive.TarOptions
options.ExcludePatterns = []string{}
}

idMapping := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps)
rootIDs := idMapping.RootPair()
// If dest is inside a root then directory is created within chroot by extractor.
// This case is only currently used by cp.
if dest == root {
idMapping := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps)
rootIDs := idMapping.RootPair()

dest = filepath.Clean(dest)
if _, err := os.Stat(dest); os.IsNotExist(err) {
if err := idtools.MkdirAllAndChownNew(dest, 0755, rootIDs); err != nil {
return err
dest = filepath.Clean(dest)
if _, err := os.Stat(dest); os.IsNotExist(err) {
if err := idtools.MkdirAllAndChownNew(dest, 0755, rootIDs); err != nil {
return err
}
}
}

Expand Down

0 comments on commit bce32e5

Please sign in to comment.