From 8b87b0e20007c1b4ad8d4e6cc4e293ed8fa3db3d Mon Sep 17 00:00:00 2001 From: Finn Bacall Date: Mon, 13 Jun 2022 16:47:51 +0100 Subject: [PATCH] Implement `Zip::FileSystem::ZipFsFile#symlink?` --- lib/zip/filesystem/file.rb | 4 ++-- test/filesystem/file_nonmutating_test.rb | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/zip/filesystem/file.rb b/lib/zip/filesystem/file.rb index 7a93f7e..d5597c2 100644 --- a/lib/zip/filesystem/file.rb +++ b/lib/zip/filesystem/file.rb @@ -197,8 +197,8 @@ module Zip false end - def symlink?(_filename) - false + def symlink?(filename) + @mapped_zip.get_entry(filename).symlink? end def socket?(_filename) diff --git a/test/filesystem/file_nonmutating_test.rb b/test/filesystem/file_nonmutating_test.rb index 0e93b64..9c5d9d1 100644 --- a/test/filesystem/file_nonmutating_test.rb +++ b/test/filesystem/file_nonmutating_test.rb @@ -186,7 +186,9 @@ class FileNonmutatingTest < MiniTest::Test end def test_symlink? - assert_always_false(:symlink?) + zip_file = ::Zip::File.new('test/data/path_traversal/tuzovakaoff/symlink.zip') + assert(zip_file.file.symlink?('path')) + assert(!zip_file.file.symlink?('path/file.txt')) end def test_socket?