Merge pull request #4507 from reitermarkus/unpack-symlink

Don't follow symlinks when unpacking a directory.
This commit is contained in:
Markus Reiter 2018-07-18 13:29:07 +02:00 committed by GitHub
commit 23be3cedda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -59,6 +59,22 @@ describe UnpackStrategy do
end
end
describe DirectoryUnpackStrategy do
let(:path) {
mktmpdir.tap do |path|
FileUtils.touch path/"file"
FileUtils.ln_s "file", path/"symlink"
end
}
subject(:strategy) { described_class.new(path) }
let(:unpack_dir) { mktmpdir }
it "does not follow symlinks" do
strategy.extract(to: unpack_dir)
expect(unpack_dir/"symlink").to be_a_symlink
end
end
describe UncompressedUnpackStrategy do
let(:path) {
(mktmpdir/"test").tap do |path|

View File

@ -96,7 +96,7 @@ class DirectoryUnpackStrategy < UnpackStrategy
private
def extract_to_dir(unpack_dir, basename:)
FileUtils.cp_r path.children, unpack_dir, preserve: true
FileUtils.cp_r File.join(path, "."), unpack_dir, preserve: true
end
end