003 File Manager
Current Path:
/usr/src/contrib/libarchive/libarchive/test
usr
/
src
/
contrib
/
libarchive
/
libarchive
/
test
/
📁
..
📄
README
(2.49 KB)
📄
main.c
(77.6 KB)
📄
read_open_memory.c
(6.3 KB)
📄
test.h
(1.9 KB)
📄
test_acl_nfs4.c
(8.49 KB)
📄
test_acl_pax.c
(15.87 KB)
📄
test_acl_pax_nfs4.tar.uu
(7.62 KB)
📄
test_acl_pax_posix1e.tar.uu
(6.93 KB)
📄
test_acl_platform_nfs4.c
(34.03 KB)
📄
test_acl_platform_posix1e.c
(16.11 KB)
📄
test_acl_posix1e.c
(7.13 KB)
📄
test_acl_text.c
(14.72 KB)
📄
test_archive_api_feature.c
(2.22 KB)
📄
test_archive_clear_error.c
(1.69 KB)
📄
test_archive_cmdline.c
(5.35 KB)
📄
test_archive_digest.c
(5.36 KB)
📄
test_archive_getdate.c
(3.82 KB)
📄
test_archive_match_owner.c
(9.59 KB)
📄
test_archive_match_path.c
(14.43 KB)
📄
test_archive_match_time.c
(42.76 KB)
📄
test_archive_pathmatch.c
(14.17 KB)
📄
test_archive_read_add_passphrase.c
(9.14 KB)
📄
test_archive_read_close_twice.c
(1.71 KB)
📄
test_archive_read_close_twice_open_fd.c
(1.97 KB)
📄
test_archive_read_close_twice_open_filename.c
(2.06 KB)
📄
test_archive_read_multiple_data_objects.c
(11.93 KB)
📄
test_archive_read_next_header_empty.c
(3.91 KB)
📄
test_archive_read_next_header_raw.c
(2.31 KB)
📄
test_archive_read_open2.c
(3.44 KB)
📄
test_archive_read_set_filter_option.c
(1.96 KB)
📄
test_archive_read_set_format_option.c
(2.46 KB)
📄
test_archive_read_set_option.c
(2.5 KB)
📄
test_archive_read_set_options.c
(4 KB)
📄
test_archive_read_support.c
(5.12 KB)
📄
test_archive_set_error.c
(1.84 KB)
📄
test_archive_string.c
(10.79 KB)
📄
test_archive_string_conversion.c
(25.02 KB)
📄
test_archive_string_conversion.txt.Z.uu
(157.5 KB)
📄
test_archive_write_add_filter_by_name.c
(6.45 KB)
📄
test_archive_write_set_filter_option.c
(1.96 KB)
📄
test_archive_write_set_format_by_name.c
(8.61 KB)
📄
test_archive_write_set_format_filter_by_ext.c
(7.16 KB)
📄
test_archive_write_set_format_option.c
(2.47 KB)
📄
test_archive_write_set_option.c
(2.5 KB)
📄
test_archive_write_set_options.c
(4 KB)
📄
test_archive_write_set_passphrase.c
(3.1 KB)
📄
test_bad_fd.c
(1.71 KB)
📄
test_compat_bzip2.c
(3.21 KB)
📄
test_compat_bzip2_1.tbz.uu
(1.18 KB)
📄
test_compat_bzip2_2.tbz.uu
(395 B)
📄
test_compat_cpio.c
(4.15 KB)
📄
test_compat_cpio_1.cpio.uu
(879 B)
📄
test_compat_gtar.c
(5.45 KB)
📄
test_compat_gtar_1.tar.uu
(13.83 KB)
📄
test_compat_gtar_2.tar.uu
(2.8 KB)
📄
test_compat_gzip.c
(3.5 KB)
📄
test_compat_gzip_1.tgz.uu
(1.16 KB)
📄
test_compat_gzip_2.tgz.uu
(406 B)
📄
test_compat_lz4.c
(4.75 KB)
📄
test_compat_lz4_1.tar.lz4.uu
(572 B)
📄
test_compat_lz4_2.tar.lz4.uu
(642 B)
📄
test_compat_lz4_3.tar.lz4.uu
(406 B)
📄
test_compat_lz4_B4.tar.lz4.uu
(407.84 KB)
📄
test_compat_lz4_B4BD.tar.lz4.uu
(407.84 KB)
📄
test_compat_lz4_B4BDBX.tar.lz4.uu
(408.19 KB)
📄
test_compat_lz4_B5.tar.lz4.uu
(139.72 KB)
📄
test_compat_lz4_B5BD.tar.lz4.uu
(139.72 KB)
📄
test_compat_lz4_B6.tar.lz4.uu
(72.29 KB)
📄
test_compat_lz4_B6BD.tar.lz4.uu
(72.29 KB)
📄
test_compat_lz4_B7.tar.lz4.uu
(55.43 KB)
📄
test_compat_lz4_B7BD.tar.lz4.uu
(55.43 KB)
📄
test_compat_lzip.c
(4.62 KB)
📄
test_compat_lzip_1.tlz.uu
(437 B)
📄
test_compat_lzip_2.tlz.uu
(359 B)
📄
test_compat_lzma.c
(5.09 KB)
📄
test_compat_lzma_1.tlz.uu
(352 B)
📄
test_compat_lzma_2.tlz.uu
(274 B)
📄
test_compat_lzma_3.tlz.uu
(274 B)
📄
test_compat_lzop.c
(5.09 KB)
📄
test_compat_lzop_1.tar.lzo.uu
(1.67 KB)
📄
test_compat_lzop_2.tar.lzo.uu
(2.17 KB)
📄
test_compat_lzop_3.tar.lzo.uu
(1.74 KB)
📄
test_compat_mac-1.tar.Z.uu
(2.11 KB)
📄
test_compat_mac-2.tar.Z.uu
(988 B)
📄
test_compat_mac.c
(8.21 KB)
📄
test_compat_perl_archive_tar.c
(2.63 KB)
📄
test_compat_perl_archive_tar.tar.uu
(2.81 KB)
📄
test_compat_plexus_archiver_tar.c
(2.75 KB)
📄
test_compat_plexus_archiver_tar.tar.uu
(2.81 KB)
📄
test_compat_solaris_pax_sparse.c
(6.76 KB)
📄
test_compat_solaris_pax_sparse_1.pax.Z.uu
(3.07 KB)
📄
test_compat_solaris_pax_sparse_2.pax.Z.uu
(3.07 KB)
📄
test_compat_solaris_tar_acl.c
(10.4 KB)
📄
test_compat_solaris_tar_acl.tar.uu
(9.7 KB)
📄
test_compat_star_acl.c
(12.21 KB)
📄
test_compat_star_acl_nfs4.tar.uu
(13.83 KB)
📄
test_compat_star_acl_posix1e.tar.uu
(13.83 KB)
📄
test_compat_tar_hardlink.c
(4.22 KB)
📄
test_compat_tar_hardlink_1.tar.uu
(2.12 KB)
📄
test_compat_uudecode.c
(2.72 KB)
📄
test_compat_uudecode_large.c
(2.47 KB)
📄
test_compat_uudecode_large.tar.Z.uu
(65.67 KB)
📄
test_compat_xz.c
(3.04 KB)
📄
test_compat_xz_1.txz.uu
(559 B)
📄
test_compat_zip.c
(17.39 KB)
📄
test_compat_zip_1.zip.uu
(726 B)
📄
test_compat_zip_2.zip.uu
(324 B)
📄
test_compat_zip_3.zip.uu
(952 B)
📄
test_compat_zip_4.zip.uu
(1.31 KB)
📄
test_compat_zip_5.zip.uu
(14.47 KB)
📄
test_compat_zip_6.zip.uu
(472 B)
📄
test_compat_zip_7.xps.uu
(21.46 KB)
📄
test_compat_zip_8.zip.uu
(226 B)
📄
test_compat_zstd.c
(3.17 KB)
📄
test_compat_zstd_1.tar.zst.uu
(553 B)
📄
test_compat_zstd_2.tar.zst.uu
(297 B)
📄
test_empty_write.c
(4.38 KB)
📄
test_entry.c
(37.69 KB)
📄
test_entry_strmode.c
(2.89 KB)
📄
test_extattr_freebsd.c
(5.21 KB)
📄
test_filter_count.c
(2.64 KB)
📄
test_fuzz.c
(15.12 KB)
📄
test_fuzz.cab.uu
(2.81 KB)
📄
test_fuzz.lzh.uu
(9 KB)
📄
test_fuzz_1.iso.Z.uu
(29.68 KB)
📄
test_gnutar_filename_encoding.c
(12.14 KB)
📄
test_link_resolver.c
(7.24 KB)
📄
test_open_failure.c
(7.24 KB)
📄
test_open_fd.c
(4.76 KB)
📄
test_open_file.c
(3.95 KB)
📄
test_open_filename.c
(7.26 KB)
📄
test_pax_filename_encoding.c
(20.46 KB)
📄
test_pax_filename_encoding.tar.uu
(6.95 KB)
📄
test_pax_xattr_header.c
(4.99 KB)
📄
test_pax_xattr_header_all.tar.uu
(4.18 KB)
📄
test_pax_xattr_header_libarchive.tar.uu
(4.19 KB)
📄
test_pax_xattr_header_schily.tar.uu
(4.18 KB)
📄
test_rar_multivolume_multiple_files.part1.rar.uu
(9.71 KB)
📄
test_rar_multivolume_multiple_files.part2.rar.uu
(9.71 KB)
📄
test_rar_multivolume_multiple_files.part3.rar.uu
(9.71 KB)
📄
test_rar_multivolume_multiple_files.part4.rar.uu
(9.71 KB)
📄
test_rar_multivolume_multiple_files.part5.rar.uu
(9.71 KB)
📄
test_rar_multivolume_multiple_files.part6.rar.uu
(6.92 KB)
📄
test_rar_multivolume_single_file.part1.rar.uu
(9.44 KB)
📄
test_rar_multivolume_single_file.part2.rar.uu
(9.44 KB)
📄
test_rar_multivolume_single_file.part3.rar.uu
(8.67 KB)
📄
test_rar_multivolume_uncompressed_files.part01.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part02.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part03.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part04.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part05.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part06.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part07.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part08.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part09.rar.uu
(17.93 KB)
📄
test_rar_multivolume_uncompressed_files.part10.rar.uu
(4.33 KB)
📄
test_read_data_large.c
(4.34 KB)
📄
test_read_disk.c
(5.66 KB)
📄
test_read_disk_directory_traversals.c
(64.08 KB)
📄
test_read_disk_entry_from_file.c
(2.75 KB)
📄
test_read_extract.c
(6.43 KB)
📄
test_read_file_nonexistent.c
(1.6 KB)
📄
test_read_filter_compress.c
(3.08 KB)
📄
test_read_filter_grzip.c
(2.69 KB)
📄
test_read_filter_grzip.tar.grz.uu
(317 B)
📄
test_read_filter_lrzip.c
(2.69 KB)
📄
test_read_filter_lrzip.tar.lrz.uu
(472 B)
📄
test_read_filter_lzop.c
(3 KB)
📄
test_read_filter_lzop.tar.lzo.uu
(510 B)
📄
test_read_filter_lzop_multiple_parts.c
(3.13 KB)
📄
test_read_filter_lzop_multiple_parts.tar.lzo.uu
(5.24 KB)
📄
test_read_filter_program.c
(3.35 KB)
📄
test_read_filter_program_signature.c
(3.93 KB)
📄
test_read_filter_uudecode.c
(6.24 KB)
📄
test_read_format_7zip.c
(29.56 KB)
📄
test_read_format_7zip_bcj2_bzip2.7z.uu
(19.17 KB)
📄
test_read_format_7zip_bcj2_copy_1.7z.uu
(37.04 KB)
📄
test_read_format_7zip_bcj2_copy_2.7z.uu
(37.06 KB)
📄
test_read_format_7zip_bcj2_copy_lzma.7z.uu
(34.24 KB)
📄
test_read_format_7zip_bcj2_deflate.7z.uu
(18.77 KB)
📄
test_read_format_7zip_bcj2_lzma1_1.7z.uu
(17.19 KB)
📄
test_read_format_7zip_bcj2_lzma1_2.7z.uu
(14.38 KB)
📄
test_read_format_7zip_bcj2_lzma2_1.7z.uu
(17.19 KB)
📄
test_read_format_7zip_bcj2_lzma2_2.7z.uu
(14.39 KB)
📄
test_read_format_7zip_bcj_bzip2.7z.uu
(16.84 KB)
📄
test_read_format_7zip_bcj_copy.7z.uu
(36.97 KB)
📄
test_read_format_7zip_bcj_deflate.7z.uu
(16.47 KB)
📄
test_read_format_7zip_bcj_lzma1.7z.uu
(14.68 KB)
📄
test_read_format_7zip_bcj_lzma2.7z.uu
(14.68 KB)
📄
test_read_format_7zip_bzip2.7z.uu
(2.09 KB)
📄
test_read_format_7zip_copy.7z.uu
(266 B)
📄
test_read_format_7zip_copy_2.7z.uu
(488 B)
📄
test_read_format_7zip_deflate.7z.uu
(2 KB)
📄
test_read_format_7zip_delta4_lzma1.7z.uu
(24.46 KB)
📄
test_read_format_7zip_delta4_lzma2.7z.uu
(24.47 KB)
📄
test_read_format_7zip_delta_lzma1.7z.uu
(16.81 KB)
📄
test_read_format_7zip_delta_lzma2.7z.uu
(16.82 KB)
📄
test_read_format_7zip_empty_archive.7z.uu
(101 B)
📄
test_read_format_7zip_empty_file.7z.uu
(160 B)
📄
test_read_format_7zip_encryption.7z.uu
(256 B)
📄
test_read_format_7zip_encryption_data.c
(3.01 KB)
📄
test_read_format_7zip_encryption_header.7z.uu
(333 B)
📄
test_read_format_7zip_encryption_header.c
(3.06 KB)
📄
test_read_format_7zip_encryption_partially.7z.uu
(368 B)
📄
test_read_format_7zip_encryption_partially.c
(3.67 KB)
📄
test_read_format_7zip_lzma1.7z.uu
(2.05 KB)
📄
test_read_format_7zip_lzma1_2.7z.uu
(355 B)
📄
test_read_format_7zip_lzma1_lzma2.7z.uu
(447 B)
📄
test_read_format_7zip_lzma2.7z.uu
(2.06 KB)
📄
test_read_format_7zip_malformed.7z.uu
(127 B)
📄
test_read_format_7zip_malformed.c
(2.58 KB)
📄
test_read_format_7zip_malformed2.7z.uu
(128 B)
📄
test_read_format_7zip_packinfo_digests.7z.uu
(266 B)
📄
test_read_format_7zip_packinfo_digests.c
(3.5 KB)
📄
test_read_format_7zip_ppmd.7z.uu
(14.05 KB)
📄
test_read_format_7zip_symbolic_name.7z.uu
(317 B)
📄
test_read_format_ar.ar.uu
(480 B)
📄
test_read_format_ar.c
(3.92 KB)
📄
test_read_format_cab.c
(12.99 KB)
📄
test_read_format_cab_1.cab.uu
(411 B)
📄
test_read_format_cab_2.cab.uu
(383 B)
📄
test_read_format_cab_3.cab.uu
(445 B)
📄
test_read_format_cab_filename.c
(6.16 KB)
📄
test_read_format_cab_filename_cp932.cab.uu
(255 B)
📄
test_read_format_cpio_afio.c
(4.97 KB)
📄
test_read_format_cpio_bin.c
(3.25 KB)
📄
test_read_format_cpio_bin_Z.c
(2.74 KB)
📄
test_read_format_cpio_bin_be.c
(2.61 KB)
📄
test_read_format_cpio_bin_be.cpio.uu
(276 B)
📄
test_read_format_cpio_bin_bz2.c
(2.6 KB)
📄
test_read_format_cpio_bin_gz.c
(2.69 KB)
📄
test_read_format_cpio_bin_le.c
(2.61 KB)
📄
test_read_format_cpio_bin_le.cpio.uu
(266 B)
📄
test_read_format_cpio_bin_lzip.c
(2.76 KB)
📄
test_read_format_cpio_bin_lzma.c
(2.71 KB)
📄
test_read_format_cpio_bin_xz.c
(3.12 KB)
📄
test_read_format_cpio_filename.c
(28.75 KB)
📄
test_read_format_cpio_filename_cp866.cpio.uu
(757 B)
📄
test_read_format_cpio_filename_eucjp.cpio.uu
(757 B)
📄
test_read_format_cpio_filename_koi8r.cpio.uu
(757 B)
📄
test_read_format_cpio_filename_utf8_jp.cpio.uu
(759 B)
📄
test_read_format_cpio_filename_utf8_ru.cpio.uu
(759 B)
📄
test_read_format_cpio_odc.c
(3.44 KB)
📄
test_read_format_cpio_svr4_bzip2_rpm.c
(4.62 KB)
📄
test_read_format_cpio_svr4_bzip2_rpm.rpm.uu
(2.71 KB)
📄
test_read_format_cpio_svr4_gzip.c
(2.74 KB)
📄
test_read_format_cpio_svr4_gzip_rpm.c
(4.62 KB)
📄
test_read_format_cpio_svr4_gzip_rpm.rpm.uu
(2.63 KB)
📄
test_read_format_cpio_svr4c_Z.c
(2.84 KB)
📄
test_read_format_empty.c
(2.08 KB)
📄
test_read_format_gtar_filename.c
(16.85 KB)
📄
test_read_format_gtar_filename_cp866.tar.Z.uu
(448 B)
📄
test_read_format_gtar_filename_eucjp.tar.Z.uu
(448 B)
📄
test_read_format_gtar_filename_koi8r.tar.Z.uu
(440 B)
📄
test_read_format_gtar_gz.c
(2.75 KB)
📄
test_read_format_gtar_lzma.c
(3.17 KB)
📄
test_read_format_gtar_sparse.c
(8.39 KB)
📄
test_read_format_gtar_sparse_1_13.tar.uu
(82.73 KB)
📄
test_read_format_gtar_sparse_1_17.tar.uu
(82.73 KB)
📄
test_read_format_gtar_sparse_1_17_posix00.tar.uu
(96.52 KB)
📄
test_read_format_gtar_sparse_1_17_posix01.tar.uu
(82.74 KB)
📄
test_read_format_gtar_sparse_1_17_posix10.tar.uu
(82.74 KB)
📄
test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu
(82.75 KB)
📄
test_read_format_gtar_sparse_skip_entry.c
(5.13 KB)
📄
test_read_format_gtar_sparse_skip_entry.tar.Z.uu
(750 B)
📄
test_read_format_iso.iso.Z.uu
(1.32 KB)
📄
test_read_format_iso_2.iso.Z.uu
(1.98 KB)
📄
test_read_format_iso_Z.c
(3.85 KB)
📄
test_read_format_iso_joliet.iso.Z.uu
(3.71 KB)
📄
test_read_format_iso_joliet_by_nero.iso.Z.uu
(3.74 KB)
📄
test_read_format_iso_joliet_long.iso.Z.uu
(4.03 KB)
📄
test_read_format_iso_joliet_rockridge.iso.Z.uu
(3.84 KB)
📄
test_read_format_iso_multi_extent.c
(3.85 KB)
📄
test_read_format_iso_multi_extent.iso.Z.uu
(3.78 KB)
📄
test_read_format_iso_rockridge.iso.Z.uu
(12.23 KB)
📄
test_read_format_iso_rockridge_ce.iso.Z.uu
(3.53 KB)
📄
test_read_format_iso_rockridge_new.iso.Z.uu
(12.35 KB)
📄
test_read_format_iso_rockridge_rr_moved.iso.Z.uu
(18.13 KB)
📄
test_read_format_iso_xorriso.c
(8.47 KB)
📄
test_read_format_iso_xorriso.iso.Z.uu
(3.53 KB)
📄
test_read_format_iso_zisofs.iso.Z.uu
(3.56 KB)
📄
test_read_format_isojoliet_bz2.c
(5.82 KB)
📄
test_read_format_isojoliet_long.c
(5.69 KB)
📄
test_read_format_isojoliet_rr.c
(7.16 KB)
📄
test_read_format_isojoliet_versioned.c
(3.66 KB)
📄
test_read_format_isorr_bz2.c
(8.89 KB)
📄
test_read_format_isorr_ce.c
(8.11 KB)
📄
test_read_format_isorr_new_bz2.c
(8.92 KB)
📄
test_read_format_isorr_rr_moved.c
(11.53 KB)
📄
test_read_format_isozisofs_bz2.c
(7.96 KB)
📄
test_read_format_lha.c
(10.27 KB)
📄
test_read_format_lha_bugfix_0.c
(2.99 KB)
📄
test_read_format_lha_bugfix_0.lzh.uu
(998 B)
📄
test_read_format_lha_filename.c
(7.76 KB)
📄
test_read_format_lha_filename_cp932.lzh.uu
(275 B)
📄
test_read_format_lha_filename_utf16.c
(5.55 KB)
📄
test_read_format_lha_filename_utf16.lzh.uu
(1.03 KB)
📄
test_read_format_lha_header0.lzh.uu
(529 B)
📄
test_read_format_lha_header1.lzh.uu
(629 B)
📄
test_read_format_lha_header2.lzh.uu
(629 B)
📄
test_read_format_lha_header3.lzh.uu
(807 B)
📄
test_read_format_lha_lh0.lzh.uu
(645 B)
📄
test_read_format_lha_lh6.lzh.uu
(629 B)
📄
test_read_format_lha_lh7.lzh.uu
(629 B)
📄
test_read_format_lha_withjunk.lzh.uu
(650 B)
📄
test_read_format_mtree.c
(34.82 KB)
📄
test_read_format_mtree.mtree.uu
(2.29 KB)
📄
test_read_format_mtree_crash747.c
(1.95 KB)
📄
test_read_format_mtree_crash747.mtree.bz2.uu
(212 B)
📄
test_read_format_mtree_nomagic.mtree.uu
(505 B)
📄
test_read_format_mtree_nomagic2.mtree.uu
(432 B)
📄
test_read_format_mtree_nomagic3.mtree.uu
(432 B)
📄
test_read_format_mtree_noprint.mtree.uu
(115 B)
📄
test_read_format_pax_bz2.c
(3.19 KB)
📄
test_read_format_rar.c
(156.59 KB)
📄
test_read_format_rar.rar.uu
(482 B)
📄
test_read_format_rar5.c
(44.49 KB)
📄
test_read_format_rar5_arm.rar.uu
(55.32 KB)
📄
test_read_format_rar5_arm_filter_on_window_boundary.rar.uu
(408 B)
📄
test_read_format_rar5_blake2.rar.uu
(935 B)
📄
test_read_format_rar5_block_size_is_too_small.rar.uu
(372 B)
📄
test_read_format_rar5_compressed.rar.uu
(640 B)
📄
test_read_format_rar5_different_solid_window_size.rar.uu
(4.28 KB)
📄
test_read_format_rar5_different_window_size.rar.uu
(40.73 KB)
📄
test_read_format_rar5_different_winsize_on_merge.rar.uu
(822 B)
📄
test_read_format_rar5_distance_overflow.rar.uu
(392 B)
📄
test_read_format_rar5_extra_field_version.rar.uu
(452 B)
📄
test_read_format_rar5_fileattr.rar.uu
(635 B)
📄
test_read_format_rar5_hardlink.rar.uu
(221 B)
📄
test_read_format_rar5_invalid_dict_reference.rar.uu
(417 B)
📄
test_read_format_rar5_leftshift1.rar.uu
(393 B)
📄
test_read_format_rar5_leftshift2.rar.uu
(203 B)
📄
test_read_format_rar5_multiarchive.part01.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part02.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part03.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part04.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part05.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part06.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part07.rar.uu
(20.71 KB)
📄
test_read_format_rar5_multiarchive.part08.rar.uu
(12.44 KB)
📄
test_read_format_rar5_multiarchive_solid.part01.rar.uu
(17.98 KB)
📄
test_read_format_rar5_multiarchive_solid.part02.rar.uu
(17.98 KB)
📄
test_read_format_rar5_multiarchive_solid.part03.rar.uu
(17.98 KB)
📄
test_read_format_rar5_multiarchive_solid.part04.rar.uu
(4.48 KB)
📄
test_read_format_rar5_multiple_files.rar.uu
(2.27 KB)
📄
test_read_format_rar5_multiple_files_solid.rar.uu
(982 B)
📄
test_read_format_rar5_nonempty_dir_stream.rar.uu
(402 B)
📄
test_read_format_rar5_owner.rar.uu
(322 B)
📄
test_read_format_rar5_readtables_overflow.rar.uu
(786 B)
📄
test_read_format_rar5_solid.rar.uu
(1.46 KB)
📄
test_read_format_rar5_stored.rar.uu
(186 B)
📄
test_read_format_rar5_stored_manyfiles.rar.uu
(3.54 KB)
📄
test_read_format_rar5_symlink.rar.uu
(316 B)
📄
test_read_format_rar5_truncated_huff.rar.uu
(281 B)
📄
test_read_format_rar5_win32.rar.uu
(4.04 KB)
📄
test_read_format_rar_binary_data.rar.uu
(1.42 MB)
📄
test_read_format_rar_compress_best.rar.uu
(16.41 KB)
📄
test_read_format_rar_compress_normal.rar.uu
(19.69 KB)
📄
test_read_format_rar_encryption_data.c
(3.46 KB)
📄
test_read_format_rar_encryption_data.rar.uu
(315 B)
📄
test_read_format_rar_encryption_header.c
(3.06 KB)
📄
test_read_format_rar_encryption_header.rar.uu
(365 B)
📄
test_read_format_rar_encryption_partially.c
(3.53 KB)
📄
test_read_format_rar_encryption_partially.rar.uu
(302 B)
📄
test_read_format_rar_invalid1.c
(2.03 KB)
📄
test_read_format_rar_invalid1.rar.uu
(138 B)
📄
test_read_format_rar_multi_lzss_blocks.rar.uu
(26.71 KB)
📄
test_read_format_rar_multivolume.part0001.rar.uu
(80.75 KB)
📄
test_read_format_rar_multivolume.part0002.rar.uu
(80.75 KB)
📄
test_read_format_rar_multivolume.part0003.rar.uu
(80.75 KB)
📄
test_read_format_rar_multivolume.part0004.rar.uu
(12.4 KB)
📄
test_read_format_rar_noeof.rar.uu
(142 B)
📄
test_read_format_rar_ppmd_lzss_conversion.rar.uu
(237.77 KB)
📄
test_read_format_rar_ppmd_use_after_free.rar.uu
(479 B)
📄
test_read_format_rar_ppmd_use_after_free2.rar.uu
(460 B)
📄
test_read_format_rar_sfx.exe.uu
(133.92 KB)
📄
test_read_format_rar_subblock.rar.uu
(250 B)
📄
test_read_format_rar_unicode.rar.uu
(967 B)
📄
test_read_format_rar_windows.rar.uu
(1.12 KB)
📄
test_read_format_raw.bufr.uu
(5.56 KB)
📄
test_read_format_raw.c
(6.44 KB)
📄
test_read_format_raw.data.Z.uu
(68 B)
📄
test_read_format_raw.data.gz.uu
(107 B)
📄
test_read_format_raw.data.uu
(62 B)
📄
test_read_format_tar.c
(24.86 KB)
📄
test_read_format_tar_concatenated.c
(3.46 KB)
📄
test_read_format_tar_concatenated.tar.uu
(4.19 KB)
📄
test_read_format_tar_empty_filename.c
(2.81 KB)
📄
test_read_format_tar_empty_filename.tar.uu
(2.12 KB)
📄
test_read_format_tar_empty_pax.c
(2.61 KB)
📄
test_read_format_tar_empty_pax.tar.Z.uu
(467 B)
📄
test_read_format_tar_empty_with_gnulabel.c
(2.26 KB)
📄
test_read_format_tar_empty_with_gnulabel.tar.uu
(13.84 KB)
📄
test_read_format_tar_filename.c
(14.37 KB)
📄
test_read_format_tar_filename_koi8r.tar.Z.uu
(692 B)
📄
test_read_format_tbz.c
(2.69 KB)
📄
test_read_format_tgz.c
(2.72 KB)
📄
test_read_format_tlz.c
(2.82 KB)
📄
test_read_format_txz.c
(3.01 KB)
📄
test_read_format_tz.c
(2.84 KB)
📄
test_read_format_ustar_filename.c
(19.57 KB)
📄
test_read_format_ustar_filename_cp866.tar.Z.uu
(370 B)
📄
test_read_format_ustar_filename_eucjp.tar.Z.uu
(376 B)
📄
test_read_format_ustar_filename_koi8r.tar.Z.uu
(362 B)
📄
test_read_format_warc.c
(3.64 KB)
📄
test_read_format_warc.warc.uu
(1.24 KB)
📄
test_read_format_xar.c
(44.73 KB)
📄
test_read_format_zip.c
(36.61 KB)
📄
test_read_format_zip.zip.uu
(647 B)
📄
test_read_format_zip_7075_utf8_paths.c
(3.75 KB)
📄
test_read_format_zip_7075_utf8_paths.zip.uu
(1.08 KB)
📄
test_read_format_zip_7z_lzma.zip.uu
(2.55 KB)
📄
test_read_format_zip_bz2_hang.zip.uu
(138 B)
📄
test_read_format_zip_bzip2.zipx.uu
(1003 B)
📄
test_read_format_zip_bzip2_multi.zipx.uu
(5.68 KB)
📄
test_read_format_zip_comment_stored.c
(2.93 KB)
📄
test_read_format_zip_comment_stored_1.zip.uu
(560 B)
📄
test_read_format_zip_comment_stored_2.zip.uu
(33.02 KB)
📄
test_read_format_zip_encryption_data.c
(3.48 KB)
📄
test_read_format_zip_encryption_data.zip.uu
(1.39 KB)
📄
test_read_format_zip_encryption_header.c
(3.06 KB)
📄
test_read_format_zip_encryption_header.zip.uu
(1.81 KB)
📄
test_read_format_zip_encryption_partially.c
(3.53 KB)
📄
test_read_format_zip_encryption_partially.zip.uu
(964 B)
📄
test_read_format_zip_extra_padding.c
(3.74 KB)
📄
test_read_format_zip_extra_padding.zip.uu
(271 B)
📄
test_read_format_zip_filename.c
(42.68 KB)
📄
test_read_format_zip_filename_cp866.zip.uu
(481 B)
📄
test_read_format_zip_filename_cp932.zip.uu
(391 B)
📄
test_read_format_zip_filename_koi8r.zip.uu
(481 B)
📄
test_read_format_zip_filename_utf8_jp.zip.uu
(766 B)
📄
test_read_format_zip_filename_utf8_ru.zip.uu
(517 B)
📄
test_read_format_zip_filename_utf8_ru2.zip.uu
(502 B)
📄
test_read_format_zip_high_compression.c
(4.93 KB)
📄
test_read_format_zip_high_compression.zip.uu
(932 B)
📄
test_read_format_zip_jar.c
(2.36 KB)
📄
test_read_format_zip_jar.jar.uu
(215 B)
📄
test_read_format_zip_length_at_end.zip.uu
(321 B)
📄
test_read_format_zip_lzma.zipx.uu
(1010 B)
📄
test_read_format_zip_lzma_alone_leak.zipx.uu
(178 B)
📄
test_read_format_zip_lzma_multi.zipx.uu
(5.58 KB)
📄
test_read_format_zip_lzma_stream_end.zipx.uu
(1002 B)
📄
test_read_format_zip_mac_metadata.c
(4.85 KB)
📄
test_read_format_zip_mac_metadata.zip.uu
(902 B)
📄
test_read_format_zip_malformed.c
(2.49 KB)
📄
test_read_format_zip_malformed1.zip.uu
(140 B)
📄
test_read_format_zip_msdos.c
(4.87 KB)
📄
test_read_format_zip_msdos.zip.uu
(1.2 KB)
📄
test_read_format_zip_nested.c
(3.61 KB)
📄
test_read_format_zip_nested.zip.uu
(842 B)
📄
test_read_format_zip_nofiletype.c
(2.68 KB)
📄
test_read_format_zip_nofiletype.zip.uu
(330 B)
📄
test_read_format_zip_padded.c
(3.22 KB)
📄
test_read_format_zip_padded1.zip.uu
(599 B)
📄
test_read_format_zip_padded2.zip.uu
(741 B)
📄
test_read_format_zip_padded3.zip.uu
(861 B)
📄
test_read_format_zip_ppmd8.zipx.uu
(879 B)
📄
test_read_format_zip_ppmd8_crash_1.zipx.uu
(118 B)
📄
test_read_format_zip_ppmd8_crash_2.zipx.uu
(118 B)
📄
test_read_format_zip_ppmd8_multi.zipx.uu
(4.9 KB)
📄
test_read_format_zip_sfx.c
(2.66 KB)
📄
test_read_format_zip_sfx.uu
(1.91 KB)
📄
test_read_format_zip_symlink.zip.uu
(475 B)
📄
test_read_format_zip_traditional_encryption_data.c
(6.72 KB)
📄
test_read_format_zip_traditional_encryption_data.zip.uu
(615 B)
📄
test_read_format_zip_ux.zip.uu
(280 B)
📄
test_read_format_zip_winzip_aes.c
(5.69 KB)
📄
test_read_format_zip_winzip_aes128.zip.uu
(3.87 KB)
📄
test_read_format_zip_winzip_aes256.zip.uu
(3.88 KB)
📄
test_read_format_zip_winzip_aes256_large.zip.uu
(132.06 KB)
📄
test_read_format_zip_winzip_aes256_stored.zip.uu
(9.47 KB)
📄
test_read_format_zip_winzip_aes_large.c
(8.91 KB)
📄
test_read_format_zip_with_invalid_traditional_eocd.c
(2.45 KB)
📄
test_read_format_zip_with_invalid_traditional_eocd.zip.uu
(684 B)
📄
test_read_format_zip_xz_multi.zipx.uu
(7.42 KB)
📄
test_read_format_zip_zip64.c
(4.37 KB)
📄
test_read_format_zip_zip64a.zip.uu
(260 B)
📄
test_read_format_zip_zip64b.zip.uu
(248 B)
📄
test_read_large.c
(3.67 KB)
📄
test_read_large_splitted_rar_aa.uu
(53.84 KB)
📄
test_read_large_splitted_rar_ab.uu
(53.84 KB)
📄
test_read_large_splitted_rar_ac.uu
(53.84 KB)
📄
test_read_large_splitted_rar_ad.uu
(53.84 KB)
📄
test_read_large_splitted_rar_ae.uu
(22.49 KB)
📄
test_read_pax_truncated.c
(10.35 KB)
📄
test_read_pax_xattr_rht_security_selinux.c
(2.56 KB)
📄
test_read_pax_xattr_rht_security_selinux.tar.uu
(13.84 KB)
📄
test_read_pax_xattr_schily.c
(2.88 KB)
📄
test_read_pax_xattr_schily.tar.uu
(13.83 KB)
📄
test_read_position.c
(4.14 KB)
📄
test_read_set_format.c
(8.39 KB)
📄
test_read_splitted_rar_aa.uu
(160 B)
📄
test_read_splitted_rar_ab.uu
(160 B)
📄
test_read_splitted_rar_ac.uu
(160 B)
📄
test_read_splitted_rar_ad.uu
(68 B)
📄
test_read_too_many_filters.c
(2.08 KB)
📄
test_read_too_many_filters.gz.uu
(573 B)
📄
test_read_truncated.c
(5.13 KB)
📄
test_read_truncated_filter.c
(5.18 KB)
📄
test_sparse_basic.c
(17.67 KB)
📄
test_splitted_rar_seek_support_aa.uu
(9.44 KB)
📄
test_splitted_rar_seek_support_ab.uu
(9.44 KB)
📄
test_splitted_rar_seek_support_ac.uu
(8.37 KB)
📄
test_tar_filenames.c
(5.05 KB)
📄
test_tar_large.c
(8.08 KB)
📄
test_ustar_filename_encoding.c
(12.12 KB)
📄
test_ustar_filenames.c
(5.71 KB)
📄
test_warn_missing_hardlink_target.c
(1.85 KB)
📄
test_write_disk.c
(12.62 KB)
📄
test_write_disk_appledouble.c
(7.95 KB)
📄
test_write_disk_appledouble.cpio.gz.uu
(558 B)
📄
test_write_disk_failures.c
(2.48 KB)
📄
test_write_disk_hardlink.c
(7.45 KB)
📄
test_write_disk_hfs_compression.c
(9.93 KB)
📄
test_write_disk_hfs_compression.tgz.uu
(108.83 KB)
📄
test_write_disk_lookup.c
(4.94 KB)
📄
test_write_disk_mac_metadata.c
(7.03 KB)
📄
test_write_disk_mac_metadata.tar.gz.uu
(678 B)
📄
test_write_disk_no_hfs_compression.c
(8.01 KB)
📄
test_write_disk_no_hfs_compression.tgz.uu
(106.69 KB)
📄
test_write_disk_perms.c
(17.58 KB)
📄
test_write_disk_secure.c
(11.75 KB)
📄
test_write_disk_secure744.c
(3.09 KB)
📄
test_write_disk_secure745.c
(2.9 KB)
📄
test_write_disk_secure746.c
(4.61 KB)
📄
test_write_disk_sparse.c
(8.72 KB)
📄
test_write_disk_symlink.c
(9.42 KB)
📄
test_write_disk_times.c
(5.86 KB)
📄
test_write_filter_b64encode.c
(6.75 KB)
📄
test_write_filter_bzip2.c
(9.76 KB)
📄
test_write_filter_compress.c
(3.36 KB)
📄
test_write_filter_gzip.c
(10.73 KB)
📄
test_write_filter_gzip_timestamp.c
(4.34 KB)
📄
test_write_filter_lrzip.c
(4.75 KB)
📄
test_write_filter_lz4.c
(13.55 KB)
📄
test_write_filter_lzip.c
(9.29 KB)
📄
test_write_filter_lzma.c
(9.52 KB)
📄
test_write_filter_lzop.c
(9.75 KB)
📄
test_write_filter_program.c
(4.72 KB)
📄
test_write_filter_uuencode.c
(6.74 KB)
📄
test_write_filter_xz.c
(9.72 KB)
📄
test_write_filter_zstd.c
(9.67 KB)
📄
test_write_format_7zip.c
(19.63 KB)
📄
test_write_format_7zip_empty.c
(9.93 KB)
📄
test_write_format_7zip_large.c
(5.74 KB)
📄
test_write_format_ar.c
(7.65 KB)
📄
test_write_format_cpio.c
(8.99 KB)
📄
test_write_format_cpio_empty.c
(2.68 KB)
📄
test_write_format_cpio_newc.c
(7.94 KB)
📄
test_write_format_cpio_odc.c
(9.1 KB)
📄
test_write_format_gnutar.c
(10.03 KB)
📄
test_write_format_gnutar_filenames.c
(5.32 KB)
📄
test_write_format_iso9660.c
(40.42 KB)
📄
test_write_format_iso9660_boot.c
(9.73 KB)
📄
test_write_format_iso9660_empty.c
(7.22 KB)
📄
test_write_format_iso9660_filename.c
(12.4 KB)
📄
test_write_format_iso9660_zisofs.c
(28.81 KB)
📄
test_write_format_mtree.c
(9.68 KB)
📄
test_write_format_mtree_absolute_path.c
(3.81 KB)
📄
test_write_format_mtree_classic.c
(6.5 KB)
📄
test_write_format_mtree_classic_indent.c
(6.71 KB)
📄
test_write_format_mtree_fflags.c
(4.13 KB)
📄
test_write_format_mtree_no_separator.c
(3.95 KB)
📄
test_write_format_mtree_quoted_filename.c
(3.3 KB)
📄
test_write_format_pax.c
(9.52 KB)
📄
test_write_format_raw.c
(4.7 KB)
📄
test_write_format_raw_b64.c
(2.9 KB)
📄
test_write_format_shar_empty.c
(2.21 KB)
📄
test_write_format_tar.c
(4.44 KB)
📄
test_write_format_tar_empty.c
(2.82 KB)
📄
test_write_format_tar_sparse.c
(10.68 KB)
📄
test_write_format_tar_ustar.c
(13.19 KB)
📄
test_write_format_tar_v7tar.c
(9.15 KB)
📄
test_write_format_warc.c
(5.56 KB)
📄
test_write_format_warc_empty.c
(4.64 KB)
📄
test_write_format_xar.c
(10.92 KB)
📄
test_write_format_xar_empty.c
(4.58 KB)
📄
test_write_format_zip.c
(32.25 KB)
📄
test_write_format_zip_compression_store.c
(16.05 KB)
📄
test_write_format_zip_empty.c
(3.37 KB)
📄
test_write_format_zip_empty_zip64.c
(4.62 KB)
📄
test_write_format_zip_file.c
(9.87 KB)
📄
test_write_format_zip_file_zip64.c
(11.52 KB)
📄
test_write_format_zip_large.c
(13.63 KB)
📄
test_write_format_zip_zip64.c
(2.62 KB)
📄
test_write_open_memory.c
(3.21 KB)
📄
test_write_read_format_zip.c
(26.34 KB)
📄
test_xattr_platform.c
(3.57 KB)
📄
test_zip_filename_encoding.c
(17.47 KB)
Editing: test_acl_platform_posix1e.c
/*- * Copyright (c) 2003-2008 Tim Kientzle * Copyright (c) 2017 Martin Matuska * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" __FBSDID("$FreeBSD: head/lib/libarchive/test/test_acl_freebsd.c 189427 2009-03-06 04:21:23Z kientzle $"); #if ARCHIVE_ACL_POSIX1E #include <sys/acl.h> #if HAVE_ACL_GET_PERM #include <acl/libacl.h> #define ACL_GET_PERM acl_get_perm #elif HAVE_ACL_GET_PERM_NP #define ACL_GET_PERM acl_get_perm_np #endif static struct archive_test_acl_t acls2[] = { { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ, ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, ARCHIVE_ENTRY_ACL_USER, 77, "user77" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0, ARCHIVE_ENTRY_ACL_USER, 78, "user78" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0007, ARCHIVE_ENTRY_ACL_GROUP, 78, "group78" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_EXECUTE, ARCHIVE_ENTRY_ACL_OTHER, -1, "" }, { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_READ | ARCHIVE_ENTRY_ACL_EXECUTE, ARCHIVE_ENTRY_ACL_MASK, -1, "" }, }; static int #if ARCHIVE_ACL_SUNOS acl_entry_get_perm(aclent_t *aclent) #else acl_entry_get_perm(acl_entry_t aclent) #endif { int permset = 0; #if ARCHIVE_ACL_FREEBSD || ARCHIVE_ACL_LIBACL acl_permset_t opaque_ps; #endif #if ARCHIVE_ACL_SUNOS if (aclent->a_perm & 1) permset |= ARCHIVE_ENTRY_ACL_EXECUTE; if (aclent->a_perm & 2) permset |= ARCHIVE_ENTRY_ACL_WRITE; if (aclent->a_perm & 4) permset |= ARCHIVE_ENTRY_ACL_READ; #else /* translate the silly opaque permset to a bitmap */ acl_get_permset(aclent, &opaque_ps); if (ACL_GET_PERM(opaque_ps, ACL_EXECUTE)) permset |= ARCHIVE_ENTRY_ACL_EXECUTE; if (ACL_GET_PERM(opaque_ps, ACL_WRITE)) permset |= ARCHIVE_ENTRY_ACL_WRITE; if (ACL_GET_PERM(opaque_ps, ACL_READ)) permset |= ARCHIVE_ENTRY_ACL_READ; #endif return permset; } #if 0 static int acl_get_specific_entry(acl_t acl, acl_tag_t requested_tag_type, int requested_tag) { int entry_id = ACL_FIRST_ENTRY; acl_entry_t acl_entry; acl_tag_t acl_tag_type; while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { /* After the first time... */ entry_id = ACL_NEXT_ENTRY; /* If this matches, return perm mask */ acl_get_tag_type(acl_entry, &acl_tag_type); if (acl_tag_type == requested_tag_type) { switch (acl_tag_type) { case ACL_USER_OBJ: if ((uid_t)requested_tag == *(uid_t *)(acl_get_qualifier(acl_entry))) { return acl_entry_get_perm(acl_entry); } break; case ACL_GROUP_OBJ: if ((gid_t)requested_tag == *(gid_t *)(acl_get_qualifier(acl_entry))) { return acl_entry_get_perm(acl_entry); } break; case ACL_USER: case ACL_GROUP: case ACL_OTHER: return acl_entry_get_perm(acl_entry); default: failure("Unexpected ACL tag type"); assert(0); } } } return -1; } #endif #if ARCHIVE_ACL_SUNOS static int acl_match(aclent_t *aclent, struct archive_test_acl_t *myacl) { if (myacl->permset != acl_entry_get_perm(aclent)) return (0); switch (aclent->a_type) { case DEF_USER_OBJ: case USER_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); break; if (myacl->tag != ARCHIVE_ENTRY_ACL_USER) return (0); if ((uid_t)myacl->qual != aclent->a_id) return (0); break; case DEF_GROUP_OBJ: case GROUP_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0); break; case DEF_GROUP: case GROUP: if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP) return (0); if ((gid_t)myacl->qual != aclent->a_id) return (0); break; case DEF_CLASS_OBJ: case CLASS_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0); break; case DEF_OTHER_OBJ: case OTHER_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0); break; } return (1); } #else /* ARCHIVE_ACL_FREEBSD || ARCHIVE_ACL_LIBACL */ static int acl_match(acl_entry_t aclent, struct archive_test_acl_t *myacl) { gid_t g, *gp; uid_t u, *up; acl_tag_t tag_type; if (myacl->permset != acl_entry_get_perm(aclent)) return (0); acl_get_tag_type(aclent, &tag_type); switch (tag_type) { case ACL_USER_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); break; case ACL_USER: if (myacl->tag != ARCHIVE_ENTRY_ACL_USER) return (0); up = acl_get_qualifier(aclent); u = *up; acl_free(up); if ((uid_t)myacl->qual != u) return (0); break; case ACL_GROUP_OBJ: if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0); break; case ACL_GROUP: if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP) return (0); gp = acl_get_qualifier(aclent); g = *gp; acl_free(gp); if ((gid_t)myacl->qual != g) return (0); break; case ACL_MASK: if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0); break; case ACL_OTHER: if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0); break; } return (1); } #endif static void compare_acls( #if ARCHIVE_ACL_SUNOS void *aclp, int aclcnt, #else acl_t acl, #endif struct archive_test_acl_t *myacls, int n) { int *marker; int matched; int i; #if ARCHIVE_ACL_SUNOS int e; aclent_t *acl_entry; #else int entry_id = ACL_FIRST_ENTRY; acl_entry_t acl_entry; #endif /* Count ACL entries in myacls array and allocate an indirect array. */ marker = malloc(sizeof(marker[0]) * n); if (marker == NULL) return; for (i = 0; i < n; i++) marker[i] = i; /* * Iterate over acls in system acl object, try to match each * one with an item in the myacls array. */ #if ARCHIVE_ACL_SUNOS for(e = 0; e < aclcnt; e++) { acl_entry = &((aclent_t *)aclp)[e]; #else while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { /* After the first time... */ entry_id = ACL_NEXT_ENTRY; #endif /* Search for a matching entry (tag and qualifier) */ for (i = 0, matched = 0; i < n && !matched; i++) { if (acl_match(acl_entry, &myacls[marker[i]])) { /* We found a match; remove it. */ marker[i] = marker[n - 1]; n--; matched = 1; } } /* TODO: Print out more details in this case. */ failure("ACL entry on file that shouldn't be there"); assert(matched == 1); } /* Dump entries in the myacls array that weren't in the system acl. */ for (i = 0; i < n; ++i) { failure(" ACL entry missing from file: " "type=%#010x,permset=%#010x,tag=%d,qual=%d,name=``%s''\n", myacls[marker[i]].type, myacls[marker[i]].permset, myacls[marker[i]].tag, myacls[marker[i]].qual, myacls[marker[i]].name); assert(0); /* Record this as a failure. */ } free(marker); } #endif /* * Verify ACL restore-to-disk. This test is Platform-specific. */ DEFINE_TEST(test_acl_platform_posix1e_restore) { #if !ARCHIVE_ACL_POSIX1E skipping("POSIX.1e ACLs are not supported on this platform"); #else /* ARCHIVE_ACL_POSIX1E */ struct stat st; struct archive *a; struct archive_entry *ae; #if ARCHIVE_ACL_SUNOS void *aclp; int aclcnt; #else acl_t acl; #endif assertMakeFile("pretest", 0644, "a"); if (setTestAcl("pretest") != ARCHIVE_TEST_ACL_TYPE_POSIX1E) { skipping("POSIX.1e ACLs are not writable on this filesystem"); return; } /* Create a write-to-disk object. */ assert(NULL != (a = archive_write_disk_new())); archive_write_disk_set_options(a, ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL); /* Populate an archive entry with some metadata, including ACL info */ ae = archive_entry_new(); assert(ae != NULL); archive_entry_set_pathname(ae, "test0"); archive_entry_set_mtime(ae, 123456, 7890); archive_entry_set_size(ae, 0); assertEntrySetAcls(ae, acls2, sizeof(acls2)/sizeof(acls2[0])); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); archive_entry_free(ae); /* Close the archive. */ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); /* Verify the data on disk. */ assertEqualInt(0, stat("test0", &st)); assertEqualInt(st.st_mtime, 123456); #if ARCHIVE_ACL_SUNOS aclp = sunacl_get(GETACL, &aclcnt, 0, "test0"); failure("acl(): errno = %d (%s)", errno, strerror(errno)); assert(aclp != NULL); #else acl = acl_get_file("test0", ACL_TYPE_ACCESS); failure("acl_get_file(): errno = %d (%s)", errno, strerror(errno)); assert(acl != (acl_t)NULL); #endif #if ARCHIVE_ACL_SUNOS compare_acls(aclp, aclcnt, acls2, sizeof(acls2)/sizeof(acls2[0])); free(aclp); aclp = NULL; #else compare_acls(acl, acls2, sizeof(acls2)/sizeof(acls2[0])); acl_free(acl); #endif #endif /* ARCHIVE_ACL_POSIX1E */ } /* * Verify ACL read-from-disk. This test is Platform-specific. */ DEFINE_TEST(test_acl_platform_posix1e_read) { #if !ARCHIVE_ACL_POSIX1E skipping("POSIX.1e ACLs are not supported on this platform"); #else /* ARCHIVE_ACL_POSIX1E */ struct archive *a; struct archive_entry *ae; int n, fd, flags, dflags; char *acl_text; const char *func, *acl1_text, *acl2_text, *acl3_text; #if ARCHIVE_ACL_SUNOS void *aclp; int aclcnt; #else acl_t acl1, acl2, acl3; #endif /* * Manually construct a directory and two files with * different ACLs. This also serves to verify that ACLs * are supported on the local filesystem. */ /* Create a test file f1 with acl1 */ #if ARCHIVE_ACL_SUNOS acl1_text = "user::rwx," "group::rwx," "other:rwx," "user:1:rw-," "group:15:r-x," "mask:rwx"; aclent_t aclp1[] = { { USER_OBJ, -1, 4 | 2 | 1 }, { USER, 1, 4 | 2 }, { GROUP_OBJ, -1, 4 | 2 | 1 }, { GROUP, 15, 4 | 1 }, { CLASS_OBJ, -1, 4 | 2 | 1 }, { OTHER_OBJ, -1, 4 | 2 | 1 } }; #else acl1_text = "user::rwx\n" "group::rwx\n" "other::rwx\n" "user:1:rw-\n" "group:15:r-x\n" "mask::rwx"; acl1 = acl_from_text(acl1_text); failure("acl_from_text(): errno = %d (%s)", errno, strerror(errno)); assert((void *)acl1 != NULL); #endif fd = open("f1", O_WRONLY | O_CREAT | O_EXCL, 0777); failure("Could not create test file?!"); if (!assert(fd >= 0)) { #if !ARCHIVE_ACL_SUNOS acl_free(acl1); #endif return; } #if ARCHIVE_ACL_SUNOS /* Check if Solaris filesystem supports POSIX.1e ACLs */ aclp = sunacl_get(GETACL, &aclcnt, fd, NULL); if (aclp == 0) close(fd); if (errno == ENOSYS || errno == ENOTSUP) { skipping("POSIX.1e ACLs are not supported on this filesystem"); return; } failure("facl(): errno = %d (%s)", errno, strerror(errno)); assert(aclp != NULL); func = "facl()"; n = facl(fd, SETACL, (int)(sizeof(aclp1)/sizeof(aclp1[0])), aclp1); #else func = "acl_set_fd()"; n = acl_set_fd(fd, acl1); #endif #if !ARCHIVE_ACL_SUNOS acl_free(acl1); #endif if (n != 0) { #if ARCHIVE_ACL_SUNOS if (errno == ENOSYS || errno == ENOTSUP) #else if (errno == EOPNOTSUPP || errno == EINVAL) #endif { close(fd); skipping("POSIX.1e ACLs are not supported on this filesystem"); return; } } failure("%s: errno = %d (%s)", func, errno, strerror(errno)); assertEqualInt(0, n); close(fd); assertMakeDir("d", 0700); /* * Create file d/f1 with acl2 * * This differs from acl1 in the u:1: and g:15: permissions. * * This file deliberately has the same name but a different ACL. * Github Issue #777 explains how libarchive's directory traversal * did not always correctly enter directories before attempting * to read ACLs, resulting in reading the ACL from a like-named * file in the wrong directory. */ #if ARCHIVE_ACL_SUNOS acl2_text = "user::rwx," "group::rwx," "other:---," "user:1:r--," "group:15:r--," "mask:rwx"; aclent_t aclp2[] = { { USER_OBJ, -1, 4 | 2 | 1 }, { USER, 1, 4 }, { GROUP_OBJ, -1, 4 | 2 | 1}, { GROUP, 15, 4 }, { CLASS_OBJ, -1, 4 | 2 | 1}, { OTHER_OBJ, -1, 0 } }; #else acl2_text = "user::rwx\n" "group::rwx\n" "other::---\n" "user:1:r--\n" "group:15:r--\n" "mask::rwx"; acl2 = acl_from_text(acl2_text); failure("acl_from_text(): errno = %d (%s)", errno, strerror(errno)); assert((void *)acl2 != NULL); #endif fd = open("d/f1", O_WRONLY | O_CREAT | O_EXCL, 0777); failure("Could not create test file?!"); if (!assert(fd >= 0)) { #if !ARCHIVE_ACL_SUNOS acl_free(acl2); #endif return; } #if ARCHIVE_ACL_SUNOS func = "facl()"; n = facl(fd, SETACL, (int)(sizeof(aclp2) / sizeof(aclp2[0])), aclp2); #else func = "acl_set_fd()"; n = acl_set_fd(fd, acl2); acl_free(acl2); #endif if (n != 0) close(fd); failure("%s: errno = %d (%s)", func, errno, strerror(errno)); assertEqualInt(0, n); close(fd); /* Create nested directory d2 with default ACLs */ assertMakeDir("d/d2", 0755); #if ARCHIVE_ACL_SUNOS acl3_text = "user::rwx," "group::r-x," "other:r-x," "user:2:r--," "group:16:-w-," "mask:rwx," "default:user::rwx," "default:user:1:r--," "default:group::r-x," "default:group:15:r--," "default:mask:rwx," "default:other:r-x"; aclent_t aclp3[] = { { USER_OBJ, -1, 4 | 2 | 1 }, { USER, 2, 4 }, { GROUP_OBJ, -1, 4 | 1 }, { GROUP, 16, 2 }, { CLASS_OBJ, -1, 4 | 2 | 1 }, { OTHER_OBJ, -1, 4 | 1 }, { USER_OBJ | ACL_DEFAULT, -1, 4 | 2 | 1 }, { USER | ACL_DEFAULT, 1, 4 }, { GROUP_OBJ | ACL_DEFAULT, -1, 4 | 1 }, { GROUP | ACL_DEFAULT, 15, 4 }, { CLASS_OBJ | ACL_DEFAULT, -1, 4 | 2 | 1}, { OTHER_OBJ | ACL_DEFAULT, -1, 4 | 1 } }; #else acl3_text = "user::rwx\n" "user:1:r--\n" "group::r-x\n" "group:15:r--\n" "mask::rwx\n" "other::r-x"; acl3 = acl_from_text(acl3_text); failure("acl_from_text(): errno = %d (%s)", errno, strerror(errno)); assert((void *)acl3 != NULL); #endif #if ARCHIVE_ACL_SUNOS func = "acl()"; n = acl("d/d2", SETACL, (int)(sizeof(aclp3) / sizeof(aclp3[0])), aclp3); #else func = "acl_set_file()"; n = acl_set_file("d/d2", ACL_TYPE_DEFAULT, acl3); acl_free(acl3); #endif failure("%s: errno = %d (%s)", func, errno, strerror(errno)); assertEqualInt(0, n); /* Create a read-from-disk object. */ assert(NULL != (a = archive_read_disk_new())); assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_open(a, ".")); assert(NULL != (ae = archive_entry_new())); #if ARCHIVE_ACL_SUNOS flags = ARCHIVE_ENTRY_ACL_TYPE_POSIX1E | ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA | ARCHIVE_ENTRY_ACL_STYLE_SOLARIS; dflags = flags; #else flags = ARCHIVE_ENTRY_ACL_TYPE_ACCESS; dflags = ARCHIVE_ENTRY_ACL_TYPE_DEFAULT; #endif /* Walk the dir until we see both of the files */ while (ARCHIVE_OK == archive_read_next_header2(a, ae)) { archive_read_disk_descend(a); if (strcmp(archive_entry_pathname(ae), "./f1") == 0) { acl_text = archive_entry_acl_to_text(ae, NULL, flags); assertEqualString(acl_text, acl1_text); free(acl_text); } else if (strcmp(archive_entry_pathname(ae), "./d/f1") == 0) { acl_text = archive_entry_acl_to_text(ae, NULL, flags); assertEqualString(acl_text, acl2_text); free(acl_text); } else if (strcmp(archive_entry_pathname(ae), "./d/d2") == 0) { acl_text = archive_entry_acl_to_text(ae, NULL, dflags); assertEqualString(acl_text, acl3_text); free(acl_text); } } archive_entry_free(ae); assertEqualInt(ARCHIVE_OK, archive_free(a)); #endif /* ARCHIVE_ACL_POSIX1E */ }
Upload File
Create Folder