diff --git a/integration/dockerfiles/Dockerfile_test_extraction b/integration/dockerfiles/Dockerfile_test_extraction new file mode 100644 index 000000000..d2a3eaedd --- /dev/null +++ b/integration/dockerfiles/Dockerfile_test_extraction @@ -0,0 +1,2 @@ +# Tests extraction of symlink, hardlink and regular files to a path that is a non-empty directory +FROM gcr.io/kaniko-test/extraction-base-image:latest diff --git a/pkg/util/fs_util.go b/pkg/util/fs_util.go index f755b335a..ef16ceb57 100644 --- a/pkg/util/fs_util.go +++ b/pkg/util/fs_util.go @@ -193,7 +193,7 @@ func extractFile(dest string, hdr *tar.Header, tr io.Reader) error { // Check if something already exists at path (symlinks etc.) // If so, delete it if FilepathExists(path) { - if err := os.Remove(path); err != nil { + if err := os.RemoveAll(path); err != nil { return errors.Wrapf(err, "error removing %s to make way for new file.", path) } } @@ -242,7 +242,7 @@ func extractFile(dest string, hdr *tar.Header, tr io.Reader) error { // Check if something already exists at path // If so, delete it if FilepathExists(path) { - if err := os.Remove(path); err != nil { + if err := os.RemoveAll(path); err != nil { return errors.Wrapf(err, "error removing %s to make way for new link", hdr.Name) } } @@ -260,7 +260,7 @@ func extractFile(dest string, hdr *tar.Header, tr io.Reader) error { // Check if something already exists at path // If so, delete it if FilepathExists(path) { - if err := os.Remove(path); err != nil { + if err := os.RemoveAll(path); err != nil { return errors.Wrapf(err, "error removing %s to make way for new symlink", hdr.Name) } }