git: bd66c1b43e33 - main - libarchive: merge from vendor branch

From: Martin Matuska <mm_at_FreeBSD.org>
Date: Sun, 20 Oct 2024 09:30:52 UTC
The branch main has been updated by mm:

URL: https://cgit.FreeBSD.org/src/commit/?id=bd66c1b43e33540205dbc1187c2f2a15c58b57ba

commit bd66c1b43e33540205dbc1187c2f2a15c58b57ba
Merge: 5ca8c28cd8c7 eff4ff4791c8
Author:     Martin Matuska <mm@FreeBSD.org>
AuthorDate: 2024-10-20 08:22:09 +0000
Commit:     Martin Matuska <mm@FreeBSD.org>
CommitDate: 2024-10-20 08:24:02 +0000

    libarchive: merge from vendor branch
    
    Libarchive 3.7.7
    
    Security fixes:
     #2158 rpm: calculate huge header sizes correctly
     #2160 util: fix out of boundary access in mktemp functions
     #2168 uu: stop processing if lines are too long
     #2174 lzop: prevent integer overflow
     #2172 rar4: protect copy_from_lzss_window_to_unp() (CVE-2024-20696)
     #2175 unzip: unify EOF handling
     #2179 rar4: fix out of boundary access with large files
     #2203 rar4: fix OOB access with unicode filenames
     #2210 rar4: add boundary checks to rgb filter
     #2248 rar4: fix OOB in delta filter
     #2249 rar4: fix OOB in audio filter
     #2256 fix multiple vulnerabilities identified by SAST
     #2258 cpio: ignore out-of-range gid/uid/size/ino and harden AFIO parsing
     #2265 rar5: clear 'data ready' cache on window buffer reallocs
     #2269 rar4: fix CVE-2024-26256 (CVE-2024-26256)
     #2330 iso: be more cautious about parsing ISO-9660 timestamps
     #2343 tar: clean up linkpath between entries
     #2364 tar: don't crash on truncated tar archives
     #2366 gzip: prevent a hang when processing a malformed gzip inside a gzip
     #2377 tar: fix two leaks in tar header parsing
    
    Important bugfixes:
     #2096 rar5: report encrypted entries
     #2150 xar: fix another infinite loop and expat error handling
     #2173 shar: check strdup return value
     #2161 lha: fix integer truncation on 32-bit systems
     #2338 tar: fix memory leaks when processing symlinks or parsing pax headers
     #2245 7zip: fix issue when skipping first file in 7zip archive that
           is a multiple of 65536 bytes
     #2252 7-zip: read/write symlink paths as UTF-8
     #2259 rar5: don't try to read rediculously long names
     #2290 ar: fix archive entries having no type
     #2360 tar: fix truncation of entry pathnames in specific archives
    
    CVE:            CVE-2024-20696, CVE-2024-26256
    PR:             282047 (exp-run)
    MFC after:      1 week

 contrib/libarchive/NEWS                            |    6 +
 contrib/libarchive/cat/bsdcat.1                    |   26 +-
 contrib/libarchive/cat/bsdcat.c                    |   22 +-
 contrib/libarchive/cat/bsdcat.h                    |   22 +-
 contrib/libarchive/cat/bsdcat_platform.h           |   24 +-
 contrib/libarchive/cat/cmdline.c                   |   22 +-
 contrib/libarchive/cat/test/test.h                 |   22 +-
 contrib/libarchive/cat/test/test_0.c               |   22 +-
 contrib/libarchive/cat/test/test_empty_gz.c        |   22 +-
 contrib/libarchive/cat/test/test_empty_lz4.c       |   22 +-
 contrib/libarchive/cat/test/test_empty_xz.c        |   22 +-
 contrib/libarchive/cat/test/test_empty_zstd.c      |   22 +-
 contrib/libarchive/cat/test/test_error.c           |   22 +-
 contrib/libarchive/cat/test/test_error_mixed.c     |   22 +-
 contrib/libarchive/cat/test/test_expand_Z.c        |   22 +-
 contrib/libarchive/cat/test/test_expand_bz2.c      |   22 +-
 contrib/libarchive/cat/test/test_expand_gz.c       |   22 +-
 contrib/libarchive/cat/test/test_expand_lz4.c      |   22 +-
 contrib/libarchive/cat/test/test_expand_mixed.c    |   22 +-
 contrib/libarchive/cat/test/test_expand_plain.c    |   22 +-
 contrib/libarchive/cat/test/test_expand_xz.c       |   22 +-
 contrib/libarchive/cat/test/test_expand_zstd.c     |   22 +-
 contrib/libarchive/cat/test/test_help.c            |   22 +-
 contrib/libarchive/cat/test/test_stdin.c           |   22 +-
 contrib/libarchive/cat/test/test_version.c         |   22 +-
 contrib/libarchive/cpio/bsdcpio.1                  |   24 +-
 contrib/libarchive/cpio/cmdline.c                  |   76 +-
 contrib/libarchive/cpio/cpio.c                     |   70 +-
 contrib/libarchive/cpio/cpio.h                     |   30 +-
 contrib/libarchive/cpio/cpio_platform.h            |   22 +-
 contrib/libarchive/cpio/test/test.h                |   22 +-
 contrib/libarchive/cpio/test/test_0.c              |   22 +-
 contrib/libarchive/cpio/test/test_basic.c          |   22 +-
 contrib/libarchive/cpio/test/test_cmdline.c        |   22 +-
 contrib/libarchive/cpio/test/test_extract_cpio_Z.c |   22 +-
 .../cpio/test/test_extract_cpio_absolute_paths.c   |   53 +
 .../libarchive/cpio/test/test_extract_cpio_bz2.c   |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_grz.c   |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_gz.c    |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_lrz.c   |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_lz.c    |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_lz4.c   |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_lzma.c  |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_lzo.c   |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_xz.c    |   22 +-
 .../libarchive/cpio/test/test_extract_cpio_zstd.c  |   22 +-
 contrib/libarchive/cpio/test/test_format_newc.c    |   28 +-
 contrib/libarchive/cpio/test/test_gcpio_compat.c   |   22 +-
 contrib/libarchive/cpio/test/test_missing_file.c   |   22 +-
 contrib/libarchive/cpio/test/test_option_0.c       |   22 +-
 contrib/libarchive/cpio/test/test_option_B_upper.c |   22 +-
 contrib/libarchive/cpio/test/test_option_C_upper.c |   22 +-
 contrib/libarchive/cpio/test/test_option_J_upper.c |   22 +-
 contrib/libarchive/cpio/test/test_option_L_upper.c |   22 +-
 contrib/libarchive/cpio/test/test_option_Z_upper.c |   22 +-
 contrib/libarchive/cpio/test/test_option_a.c       |   22 +-
 .../libarchive/cpio/test/test_option_b64encode.c   |   22 +-
 contrib/libarchive/cpio/test/test_option_c.c       |   30 +-
 contrib/libarchive/cpio/test/test_option_d.c       |   24 +-
 contrib/libarchive/cpio/test/test_option_f.c       |   22 +-
 contrib/libarchive/cpio/test/test_option_grzip.c   |   22 +-
 contrib/libarchive/cpio/test/test_option_help.c    |   22 +-
 contrib/libarchive/cpio/test/test_option_l.c       |   22 +-
 contrib/libarchive/cpio/test/test_option_lrzip.c   |   22 +-
 contrib/libarchive/cpio/test/test_option_lz4.c     |   22 +-
 contrib/libarchive/cpio/test/test_option_lzma.c    |   22 +-
 contrib/libarchive/cpio/test/test_option_lzop.c    |   22 +-
 contrib/libarchive/cpio/test/test_option_m.c       |   22 +-
 .../libarchive/cpio/test/test_option_passphrase.c  |   22 +-
 contrib/libarchive/cpio/test/test_option_t.c       |   29 +-
 contrib/libarchive/cpio/test/test_option_u.c       |   22 +-
 .../libarchive/cpio/test/test_option_uuencode.c    |   22 +-
 contrib/libarchive/cpio/test/test_option_version.c |   22 +-
 contrib/libarchive/cpio/test/test_option_xz.c      |   22 +-
 contrib/libarchive/cpio/test/test_option_y.c       |   22 +-
 contrib/libarchive/cpio/test/test_option_z.c       |   22 +-
 contrib/libarchive/cpio/test/test_option_zstd.c    |   22 +-
 contrib/libarchive/cpio/test/test_owner_parse.c    |  112 +-
 .../libarchive/cpio/test/test_passthrough_dotdot.c |   22 +-
 .../cpio/test/test_passthrough_reverse.c           |   22 +-
 contrib/libarchive/libarchive/archive.h            |    4 +-
 contrib/libarchive/libarchive/archive_acl.c        |   71 +-
 .../libarchive/libarchive/archive_acl_private.h    |    2 +
 contrib/libarchive/libarchive/archive_crc32.h      |    5 +
 contrib/libarchive/libarchive/archive_cryptor.c    |    4 +-
 .../libarchive/archive_cryptor_private.h           |    2 +-
 contrib/libarchive/libarchive/archive_entry.c      |  300 ++-
 contrib/libarchive/libarchive/archive_entry.h      |    8 +-
 .../libarchive/archive_entry_link_resolver.c       |   15 +
 .../libarchive/libarchive/archive_entry_perms.3    |    1 +
 .../libarchive/libarchive/archive_entry_private.h  |    4 +-
 .../libarchive/libarchive/archive_entry_sparse.c   |    2 +-
 .../libarchive/libarchive/archive_entry_xattr.c    |    2 +-
 contrib/libarchive/libarchive/archive_hmac.c       |    2 +-
 .../libarchive/libarchive/archive_hmac_private.h   |    2 +-
 contrib/libarchive/libarchive/archive_match.c      |    2 +-
 .../libarchive/archive_openssl_evp_private.h       |    2 +-
 .../libarchive/archive_openssl_hmac_private.h      |    2 +-
 contrib/libarchive/libarchive/archive_ppmd7.c      |    2 +-
 contrib/libarchive/libarchive/archive_ppmd8.c      |    7 +-
 contrib/libarchive/libarchive/archive_private.h    |    6 +-
 contrib/libarchive/libarchive/archive_read.c       |    8 +-
 .../libarchive/archive_read_append_filter.c        |    8 +-
 .../libarchive/archive_read_disk_entry_from_file.c |    1 +
 .../libarchive/archive_read_disk_posix.c           |    2 +-
 .../libarchive/libarchive/archive_read_extract2.c  |    2 +-
 .../libarchive/libarchive/archive_read_open_fd.c   |    2 +-
 .../libarchive/libarchive/archive_read_open_file.c |    2 +-
 .../libarchive/archive_read_open_filename.c        |    4 +-
 .../libarchive/archive_read_open_memory.c          |    2 +-
 .../libarchive/archive_read_support_filter_bzip2.c |    4 +-
 .../archive_read_support_filter_compress.c         |    2 +-
 .../libarchive/archive_read_support_filter_gzip.c  |   18 +-
 .../libarchive/archive_read_support_filter_lz4.c   |    6 +-
 .../libarchive/archive_read_support_filter_lzop.c  |    5 +-
 .../archive_read_support_filter_program.c          |    6 +-
 .../libarchive/archive_read_support_filter_rpm.c   |   45 +-
 .../libarchive/archive_read_support_filter_uu.c    |   16 +-
 .../libarchive/archive_read_support_filter_xz.c    |    4 +-
 .../libarchive/archive_read_support_filter_zstd.c  |    4 +-
 .../libarchive/archive_read_support_format_7zip.c  |   93 +-
 .../libarchive/archive_read_support_format_ar.c    |   10 +-
 .../libarchive/archive_read_support_format_cab.c   |   12 +-
 .../libarchive/archive_read_support_format_cpio.c  |   32 +-
 .../archive_read_support_format_iso9660.c          |  305 ++-
 .../libarchive/archive_read_support_format_lha.c   |   11 +-
 .../libarchive/archive_read_support_format_mtree.c |    2 +-
 .../libarchive/archive_read_support_format_rar.c   |  128 +-
 .../libarchive/archive_read_support_format_rar5.c  |  171 +-
 .../libarchive/archive_read_support_format_raw.c   |    2 +-
 .../libarchive/archive_read_support_format_tar.c   | 2221 +++++++++++++-------
 .../libarchive/archive_read_support_format_xar.c   |   32 +-
 .../libarchive/archive_read_support_format_zip.c   |   45 +-
 contrib/libarchive/libarchive/archive_string.c     |   86 +-
 contrib/libarchive/libarchive/archive_util.c       |   16 +-
 contrib/libarchive/libarchive/archive_write.c      |   19 +-
 .../archive_write_add_filter_b64encode.c           |    6 +-
 .../libarchive/archive_write_add_filter_bzip2.c    |    5 +-
 .../libarchive/archive_write_add_filter_compress.c |    4 +-
 .../libarchive/archive_write_add_filter_gzip.c     |    3 +-
 .../libarchive/archive_write_add_filter_uuencode.c |    2 +-
 .../libarchive/archive_write_add_filter_xz.c       |    5 +-
 .../libarchive/archive_write_add_filter_zstd.c     |    3 +-
 .../libarchive/archive_write_disk_posix.c          |   16 +-
 .../libarchive/libarchive/archive_write_open_fd.c  |    2 +-
 .../libarchive/archive_write_open_file.c           |    2 +-
 .../libarchive/archive_write_open_filename.c       |    2 +-
 .../libarchive/archive_write_open_memory.c         |    2 +-
 .../libarchive/archive_write_set_format_7zip.c     |   16 +-
 .../libarchive/archive_write_set_format_ar.c       |    6 +-
 .../archive_write_set_format_cpio_binary.c         |    5 +-
 .../archive_write_set_format_cpio_newc.c           |    2 +-
 .../libarchive/archive_write_set_format_cpio_odc.c |    5 +-
 .../libarchive/archive_write_set_format_gnutar.c   |    6 +-
 .../libarchive/archive_write_set_format_iso9660.c  |    2 +-
 .../libarchive/archive_write_set_format_pax.c      |   24 +-
 .../libarchive/archive_write_set_format_raw.c      |    2 +-
 .../libarchive/archive_write_set_format_shar.c     |   10 +-
 .../libarchive/archive_write_set_format_ustar.c    |    8 +-
 .../libarchive/archive_write_set_format_v7tar.c    |    4 +-
 .../libarchive/archive_write_set_format_xar.c      |   26 +-
 .../libarchive/archive_write_set_format_zip.c      |   10 +-
 .../libarchive/test/test_7zip_filename_encoding.c  |  100 +
 contrib/libarchive/libarchive/test/test_ar_mode.c  |   40 +
 .../libarchive/test/test_archive_match_time.c      |   60 +-
 .../libarchive/libarchive/test/test_archive_read.c |   63 +
 .../test/test_archive_read_multiple_data_objects.c |   23 +-
 .../libarchive/test/test_archive_string.c          |    2 +-
 .../test/test_archive_string_conversion.c          |  135 ++
 .../test/test_archive_write_add_filter_by_name.c   |    2 +-
 .../libarchive/libarchive/test/test_compat_lzip.c  |    2 +-
 .../test/test_compat_solaris_pax_sparse.c          |    2 +-
 contrib/libarchive/libarchive/test/test_entry.c    |   14 +-
 .../test/test_gnutar_filename_encoding.c           |  102 +
 .../libarchive/test/test_link_resolver.c           |   45 +
 .../libarchive/test/test_pax_filename_encoding.c   |  152 ++
 .../test/test_read_filter_gzip_recursive.c         |   50 +
 .../test/test_read_filter_gzip_recursive.gz.uu     |   19 +
 .../libarchive/test/test_read_format_7zip.c        |   44 +
 .../test_read_format_7zip_extract_second.7z.uu     |   11 +
 .../libarchive/test/test_read_format_cpio_afio.c   |   30 +-
 .../libarchive/test/test_read_format_huge_rpm.c    |   50 +
 .../test/test_read_format_huge_rpm.rpm.uu          |  244 +++
 .../test/test_read_format_iso_3.iso.Z.uu           |   40 +
 .../libarchive/test/test_read_format_iso_Z.c       |  122 +-
 .../libarchive/test/test_read_format_mtree.c       |    2 +-
 .../test/test_read_format_rar4_encrypted.rar.uu    |   10 +
 ...est_read_format_rar4_encrypted_filenames.rar.uu |   14 +
 .../test_read_format_rar4_solid_encrypted.rar.uu   |   11 +
 ...ad_format_rar4_solid_encrypted_filenames.rar.uu |   13 +
 .../libarchive/test/test_read_format_rar5.c        |   39 +-
 ...read_format_rar5_data_ready_pointer_leak.rar.uu |   28 +
 .../test/test_read_format_rar5_encrypted.rar.uu    |   12 +
 ...est_read_format_rar5_encrypted_filenames.rar.uu |   19 +
 .../test_read_format_rar5_solid_encrypted.rar.uu   |   14 +
 ...ad_format_rar5_solid_encrypted_filenames.rar.uu |   18 +
 .../test/test_read_format_rar_encryption.c         |  176 ++
 .../libarchive/test/test_read_format_tar.c         |    2 +-
 .../test/test_read_format_tar_pax_large_attr.c     |   65 +
 .../test_read_format_tar_pax_large_attr.tar.Z.uu   |  149 ++
 .../libarchive/test/test_read_format_xar.c         |   37 +-
 ..._read_format_xar_duplicate_filename_node.xar.uu |   14 +
 .../libarchive/test/test_read_format_zip_nested.c  |    2 +-
 ...t_read_format_zip_traditional_encryption_data.c |    2 +-
 .../test/test_read_format_zip_winzip_aes.c         |    2 +-
 .../test/test_read_format_zip_winzip_aes_large.c   |    2 +-
 .../libarchive/test/test_read_truncated_filter.c   |    4 +-
 .../libarchive/libarchive/test/test_sparse_basic.c |   17 +-
 .../libarchive/libarchive/test/test_tar_large.c    |    2 +-
 .../libarchive/test/test_ustar_filename_encoding.c |  102 +
 .../test/test_write_disk_secure_noabsolutepaths.c  |   88 +
 .../libarchive/test/test_write_filter_b64encode.c  |    4 +-
 .../libarchive/test/test_write_filter_bzip2.c      |    4 +-
 .../libarchive/test/test_write_filter_compress.c   |    4 +-
 .../libarchive/test/test_write_filter_gzip.c       |    4 +-
 .../test/test_write_filter_gzip_timestamp.c        |    4 +-
 .../libarchive/test/test_write_filter_lrzip.c      |    4 +-
 .../libarchive/test/test_write_filter_lz4.c        |    8 +-
 .../libarchive/test/test_write_filter_lzip.c       |    4 +-
 .../libarchive/test/test_write_filter_lzma.c       |    4 +-
 .../libarchive/test/test_write_filter_lzop.c       |    4 +-
 .../libarchive/test/test_write_filter_uuencode.c   |    4 +-
 .../libarchive/test/test_write_filter_xz.c         |    4 +-
 .../libarchive/test/test_write_filter_zstd.c       |   12 +-
 .../test/test_write_format_iso9660_filename.c      |    2 +-
 .../libarchive/test/test_write_format_zip.c        |    6 +-
 .../test/test_write_format_zip_entry_size_unset.c  |    2 +-
 .../libarchive/test/test_write_format_zip_large.c  |    2 +-
 .../libarchive/test/test_write_format_zip_stream.c |    5 +
 .../test/test_write_format_zip_windows_path.c      |  100 +
 .../libarchive/test/test_zip_filename_encoding.c   |   95 +
 contrib/libarchive/tar/bsdtar.1                    |   24 +-
 contrib/libarchive/tar/bsdtar.c                    |   25 +-
 contrib/libarchive/tar/bsdtar.h                    |   22 +-
 contrib/libarchive/tar/bsdtar_platform.h           |   24 +-
 contrib/libarchive/tar/cmdline.c                   |   22 +-
 contrib/libarchive/tar/creation_set.c              |   24 +-
 contrib/libarchive/tar/read.c                      |   22 +-
 contrib/libarchive/tar/subst.c                     |   22 +-
 contrib/libarchive/tar/test/test.h                 |   22 +-
 contrib/libarchive/tar/test/test_0.c               |   22 +-
 contrib/libarchive/tar/test/test_basic.c           |   22 +-
 contrib/libarchive/tar/test/test_copy.c            |   58 +-
 contrib/libarchive/tar/test/test_empty_mtree.c     |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_Z.c   |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_bz2.c |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_grz.c |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_gz.c  |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_lrz.c |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_lz.c  |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_lz4.c |   22 +-
 .../libarchive/tar/test/test_extract_tar_lzma.c    |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_lzo.c |   22 +-
 contrib/libarchive/tar/test/test_extract_tar_xz.c  |   22 +-
 .../libarchive/tar/test/test_extract_tar_zstd.c    |   22 +-
 contrib/libarchive/tar/test/test_format_newc.c     |   22 +-
 contrib/libarchive/tar/test/test_help.c            |   22 +-
 contrib/libarchive/tar/test/test_leading_slash.c   |   22 +-
 contrib/libarchive/tar/test/test_missing_file.c    |   22 +-
 contrib/libarchive/tar/test/test_option_C_mtree.c  |   30 +-
 contrib/libarchive/tar/test/test_option_C_upper.c  |   22 +-
 contrib/libarchive/tar/test/test_option_H_upper.c  |   40 +-
 contrib/libarchive/tar/test/test_option_L_upper.c  |   40 +-
 contrib/libarchive/tar/test/test_option_O_upper.c  |   22 +-
 contrib/libarchive/tar/test/test_option_P.c        |   82 +
 contrib/libarchive/tar/test/test_option_T_upper.c  |   22 +-
 contrib/libarchive/tar/test/test_option_U_upper.c  |   22 +-
 contrib/libarchive/tar/test/test_option_X_upper.c  |   22 +-
 contrib/libarchive/tar/test/test_option_a.c        |   22 +-
 contrib/libarchive/tar/test/test_option_acls.c     |   22 +-
 contrib/libarchive/tar/test/test_option_b.c        |   22 +-
 .../libarchive/tar/test/test_option_b64encode.c    |   22 +-
 contrib/libarchive/tar/test/test_option_exclude.c  |   22 +-
 .../libarchive/tar/test/test_option_exclude_vcs.c  |   24 +-
 contrib/libarchive/tar/test/test_option_fflags.c   |   24 +-
 .../libarchive/tar/test/test_option_gid_gname.c    |   22 +-
 contrib/libarchive/tar/test/test_option_group.c    |   22 +-
 contrib/libarchive/tar/test/test_option_grzip.c    |   22 +-
 .../libarchive/tar/test/test_option_ignore_zeros.c |   31 +-
 contrib/libarchive/tar/test/test_option_j.c        |   22 +-
 contrib/libarchive/tar/test/test_option_k.c        |   22 +-
 .../tar/test/test_option_keep_newer_files.c        |   22 +-
 contrib/libarchive/tar/test/test_option_lrzip.c    |   22 +-
 contrib/libarchive/tar/test/test_option_lz4.c      |   22 +-
 contrib/libarchive/tar/test/test_option_lzma.c     |   22 +-
 contrib/libarchive/tar/test/test_option_lzop.c     |   22 +-
 contrib/libarchive/tar/test/test_option_n.c        |   22 +-
 .../libarchive/tar/test/test_option_newer_than.c   |   22 +-
 contrib/libarchive/tar/test/test_option_nodump.c   |   22 +-
 .../libarchive/tar/test/test_option_older_than.c   |   22 +-
 contrib/libarchive/tar/test/test_option_owner.c    |   22 +-
 .../libarchive/tar/test/test_option_passphrase.c   |   22 +-
 contrib/libarchive/tar/test/test_option_q.c        |   22 +-
 contrib/libarchive/tar/test/test_option_r.c        |   22 +-
 contrib/libarchive/tar/test/test_option_s.c        |   22 +-
 .../libarchive/tar/test/test_option_safe_writes.c  |   22 +-
 .../libarchive/tar/test/test_option_uid_uname.c    |   22 +-
 contrib/libarchive/tar/test/test_option_uuencode.c |   22 +-
 contrib/libarchive/tar/test/test_option_xattrs.c   |   24 +-
 contrib/libarchive/tar/test/test_option_xz.c       |   22 +-
 contrib/libarchive/tar/test/test_option_z.c        |   22 +-
 contrib/libarchive/tar/test/test_option_zstd.c     |   22 +-
 contrib/libarchive/tar/test/test_patterns.c        |   22 +-
 contrib/libarchive/tar/test/test_print_longpath.c  |   22 +-
 contrib/libarchive/tar/test/test_stdio.c           |   22 +-
 .../libarchive/tar/test/test_strip_components.c    |   22 +-
 contrib/libarchive/tar/test/test_symlink_dir.c     |   22 +-
 contrib/libarchive/tar/test/test_version.c         |   22 +-
 contrib/libarchive/tar/util.c                      |   42 +-
 contrib/libarchive/tar/write.c                     |   35 +-
 contrib/libarchive/test_utils/test_common.h        |    5 +-
 contrib/libarchive/test_utils/test_main.c          |  101 +-
 contrib/libarchive/unzip/bsdunzip.1                |   25 +-
 contrib/libarchive/unzip/bsdunzip.c                |   49 +-
 contrib/libarchive/unzip/bsdunzip.h                |   22 +-
 contrib/libarchive/unzip/bsdunzip_platform.h       |   24 +-
 contrib/libarchive/unzip/cmdline.c                 |   22 +-
 contrib/libarchive/unzip/la_getline.c              |   26 +-
 contrib/libarchive/unzip/test/test.h               |   22 +-
 contrib/libarchive/unzip/test/test_0.c             |   22 +-
 contrib/libarchive/unzip/test/test_C.c             |   23 +-
 contrib/libarchive/unzip/test/test_I.c             |   40 +-
 contrib/libarchive/unzip/test/test_L.c             |   23 +-
 contrib/libarchive/unzip/test/test_P_encryption.c  |   25 +-
 contrib/libarchive/unzip/test/test_Z1.c            |   23 +-
 contrib/libarchive/unzip/test/test_basic.c         |   23 +-
 contrib/libarchive/unzip/test/test_d.c             |   23 +-
 contrib/libarchive/unzip/test/test_doubledash.c    |   23 +-
 contrib/libarchive/unzip/test/test_glob.c          |   23 +-
 contrib/libarchive/unzip/test/test_j.c             |   23 +-
 contrib/libarchive/unzip/test/test_n.c             |   25 +-
 contrib/libarchive/unzip/test/test_not_exist.c     |   25 +-
 contrib/libarchive/unzip/test/test_o.c             |   25 +-
 contrib/libarchive/unzip/test/test_p.c             |   23 +-
 contrib/libarchive/unzip/test/test_q.c             |   23 +-
 contrib/libarchive/unzip/test/test_singlefile.c    |   23 +-
 contrib/libarchive/unzip/test/test_t.c             |   23 +-
 contrib/libarchive/unzip/test/test_t_bad.c         |   23 +-
 contrib/libarchive/unzip/test/test_version.c       |   22 +-
 contrib/libarchive/unzip/test/test_x.c             |   23 +-
 lib/libarchive/tests/Makefile                      |   24 +
 usr.bin/cpio/tests/Makefile                        |    1 +
 usr.bin/tar/tests/Makefile                         |    1 +
 343 files changed, 5857 insertions(+), 5333 deletions(-)

diff --cc contrib/libarchive/cpio/test/test_extract_cpio_absolute_paths.c
index 000000000000,66fc56641bd0..51650bc00f5a
mode 000000,100644..100644
--- a/contrib/libarchive/cpio/test/test_extract_cpio_absolute_paths.c
+++ b/contrib/libarchive/cpio/test/test_extract_cpio_absolute_paths.c
@@@ -1,0 -1,53 +1,53 @@@
+ /*-
+  * SPDX-License-Identifier: BSD-2-Clause
+  *
+  * Copyright (c) 2024 Mostyn Bramley-Moore <mostyn@antipode.se>
+  */
+ 
+ #include "test.h"
+ 
+ #include <stdlib.h>
+ #include <string.h>
+ 
+ #if defined(_WIN32) && !defined(__CYGWIN__)
+ #define UNLINK _unlink
+ #else
+ #define UNLINK unlink
+ #endif
+ 
+ DEFINE_TEST(test_extract_cpio_absolute_paths)
+ {
+ 	int r;
+ 
+ 	// Create an absolute path for a test file inside testworkdir.
 -	char *entry_suffix = "/cpio-noabs";
++	const char *entry_suffix = "/cpio-noabs";
+ 	size_t entry_suffix_length = strlen(entry_suffix);
+ 	size_t testworkdir_length = strlen(testworkdir);
+ 	size_t temp_absolute_file_name_length = testworkdir_length + entry_suffix_length;
+ 	char *temp_absolute_file_name = calloc(1, temp_absolute_file_name_length + 1); // +1 for null character.
+ 	assertEqualInt(snprintf(temp_absolute_file_name, temp_absolute_file_name_length + 1, "%s%s", testworkdir, entry_suffix),
+ 		temp_absolute_file_name_length);
+ 
+ 	// Create the file.
+ 	const char *sample_data = "test file from test_extract_cpio_absolute_paths";
+ 	assertMakeFile(temp_absolute_file_name, 0644, sample_data);
+ 
+ 	// Create an archive with the test file, using an absolute path.
+ 	assertMakeFile("filelist", 0644, temp_absolute_file_name);
+ 	r = systemf("%s -o < filelist > archive.cpio 2> stderr1.txt", testprog);
+ 	assertEqualInt(r, 0);
+ 
+ 	// Ensure that the temp file does not exist.
+ 	UNLINK(temp_absolute_file_name);
+ 
+ 	// We should refuse to create the absolute path without --insecure.
+ 	r = systemf("%s -i < archive.cpio 2> stderr2.txt", testprog);
+ 	assert(r != 0);
+ 	assertFileNotExists(temp_absolute_file_name);
+ 	UNLINK(temp_absolute_file_name); // Cleanup just in case.
+ 
+ 	// But if we specify --insecure then the absolute path should be created.
+ 	r = systemf("%s -i --insecure < archive.cpio 2> stderr3.txt", testprog);
+ 	assert(r == 0);
+ 	assertFileExists(temp_absolute_file_name);
+ }
diff --cc contrib/libarchive/libarchive/test/test_7zip_filename_encoding.c
index 000000000000,cf562d39fda7..cf562d39fda7
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_7zip_filename_encoding.c
+++ b/contrib/libarchive/libarchive/test/test_7zip_filename_encoding.c
diff --cc contrib/libarchive/libarchive/test/test_ar_mode.c
index 000000000000,4f9feb1210d2..4f9feb1210d2
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_ar_mode.c
+++ b/contrib/libarchive/libarchive/test/test_ar_mode.c
diff --cc contrib/libarchive/libarchive/test/test_archive_read.c
index 000000000000,583e5166a0be..583e5166a0be
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_archive_read.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read.c
diff --cc contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.c
index 000000000000,0042a0511d5a..0042a0511d5a
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.c
+++ b/contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.c
diff --cc contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.gz.uu
index 000000000000,14b0476bed40..14b0476bed40
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.gz.uu
+++ b/contrib/libarchive/libarchive/test/test_read_filter_gzip_recursive.gz.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_7zip_extract_second.7z.uu
index 000000000000,aa3d6e235784..aa3d6e235784
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_7zip_extract_second.7z.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_extract_second.7z.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_huge_rpm.c
index 000000000000,729c1e188d28..729c1e188d28
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_huge_rpm.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_huge_rpm.c
diff --cc contrib/libarchive/libarchive/test/test_read_format_huge_rpm.rpm.uu
index 000000000000,db2111859662..db2111859662
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_huge_rpm.rpm.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_huge_rpm.rpm.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_iso_3.iso.Z.uu
index 000000000000,e7734ab33bf3..e7734ab33bf3
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_iso_3.iso.Z.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_iso_3.iso.Z.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted.rar.uu
index 000000000000,584183b4a46f..584183b4a46f
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted_filenames.rar.uu
index 000000000000,3d7aa806a86d..3d7aa806a86d
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted_filenames.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar4_encrypted_filenames.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted.rar.uu
index 000000000000,7d73ee86d9ef..7d73ee86d9ef
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted_filenames.rar.uu
index 000000000000,6c28e955d0e1..6c28e955d0e1
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted_filenames.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar4_solid_encrypted_filenames.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar5_data_ready_pointer_leak.rar.uu
index 000000000000,8c8c90778b9d..8c8c90778b9d
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar5_data_ready_pointer_leak.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_data_ready_pointer_leak.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted.rar.uu
index 000000000000,0a52fa26bb3c..0a52fa26bb3c
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted_filenames.rar.uu
index 000000000000,931240a16d49..931240a16d49
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted_filenames.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_encrypted_filenames.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted.rar.uu
index 000000000000,d3113a305917..d3113a305917
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted_filenames.rar.uu
index 000000000000,4f3dbfb33127..4f3dbfb33127
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted_filenames.rar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_solid_encrypted_filenames.rar.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_rar_encryption.c
index 000000000000,a184b86b5ffe..a184b86b5ffe
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption.c
diff --cc contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.c
index 000000000000,1c2b55f9c6fb..1c2b55f9c6fb
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.c
diff --cc contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.tar.Z.uu
index 000000000000,01eb55588ea7..01eb55588ea7
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.tar.Z.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_tar_pax_large_attr.tar.Z.uu
diff --cc contrib/libarchive/libarchive/test/test_read_format_xar_duplicate_filename_node.xar.uu
index 000000000000,18cbcf5898df..18cbcf5898df
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_read_format_xar_duplicate_filename_node.xar.uu
+++ b/contrib/libarchive/libarchive/test/test_read_format_xar_duplicate_filename_node.xar.uu
diff --cc contrib/libarchive/libarchive/test/test_write_disk_secure_noabsolutepaths.c
index 000000000000,df244727fe44..1c9254a42093
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_write_disk_secure_noabsolutepaths.c
+++ b/contrib/libarchive/libarchive/test/test_write_disk_secure_noabsolutepaths.c
@@@ -1,0 -1,88 +1,88 @@@
+ /*-
+  * SPDX-License-Identifier: BSD-2-Clause
+  *
+  * Copyright (c) 2024 Mostyn Bramley-Moore <mostyn@antipode.se>
+  */
+ 
+ #include "test.h"
+ 
+ #include <stdlib.h>
+ 
+ #if defined(_WIN32) && !defined(__CYGWIN__)
+ #define UNLINK _unlink
+ #else
+ #include <unistd.h>
+ #define UNLINK unlink
+ #endif
+ 
+ /*
+  * Exercise security checks that should prevent writing absolute paths
+  * when extracting archives.
+  */
+ DEFINE_TEST(test_write_disk_secure_noabsolutepaths)
+ {
+ 	struct archive *a, *ad;
+ 	struct archive_entry *ae;
+ 
+ 	char buff[10000];
+ 
+ 	size_t used;
+ 
+ 	// Create an archive_write object.
+ 	assert((a = archive_write_new()) != NULL);
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used));
+ 
+ 	// Create an absolute path for a test file inside testworkdir.
 -	char *entry_suffix = "/badfile";
++	const char *entry_suffix = "/badfile";
+ 	size_t entry_suffix_length = strlen(entry_suffix);
+ 	size_t testworkdir_length = strlen(testworkdir);
+ 	size_t temp_absolute_file_name_length = testworkdir_length + entry_suffix_length;
+ 	char *temp_absolute_file_name = calloc(1, temp_absolute_file_name_length + 1); // +1 for null character.
+ 	assertEqualInt(snprintf(temp_absolute_file_name, temp_absolute_file_name_length + 1, "%s%s", testworkdir, entry_suffix),
+ 		temp_absolute_file_name_length);
+ 
+ 	// Convert to a unix-style path, so we can compare it to the entry
+ 	// path when reading back the archive.
+ 	for (char *p = temp_absolute_file_name; *p != '\0'; p++)
+ 		if (*p == '\\') *p = '/';
+ 
+ 	// Add a regular file entry with an absolute path.
+ 	assert((ae = archive_entry_new()) != NULL);
+ 	archive_entry_copy_pathname(ae, temp_absolute_file_name);
+ 	archive_entry_set_mode(ae, S_IFREG | 0777);
+ 	archive_entry_set_size(ae, 6);
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ 	archive_entry_free(ae);
+ 	assertEqualInt(6, archive_write_data(a, "hello", 6));
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ 	assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ 
+ 	// Now try to extract the data.
+ 	assert((a = archive_read_new()) != NULL);
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+ 
+ 	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ 	assertEqualString(temp_absolute_file_name, archive_entry_pathname(ae));
+ 	assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ 	assertEqualInt(AE_IFREG | 0777, archive_entry_mode(ae));
+ 	assertEqualInt(6, archive_entry_size(ae));
+ 
+ 	// This should succeed.
+ 	assertEqualInt(ARCHIVE_OK, archive_read_extract(a, ae, 0));
+ 	UNLINK(temp_absolute_file_name);
+ 
+ 	// This should fail, since the archive entry has an absolute path.
+ 	assert(ARCHIVE_OK != archive_read_extract(a, ae, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS));
+ 
+ 	// This should also fail.
+ 	assert((ad = archive_write_new()) != NULL);
+ 	assertEqualInt(ARCHIVE_OK, archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS));
+ 	assert(ARCHIVE_OK != archive_read_extract2(a, ae, ad));
+ 
+ 	assertEqualInt(ARCHIVE_OK, archive_write_free(ad));
+ 	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ }
diff --cc contrib/libarchive/libarchive/test/test_write_format_zip_windows_path.c
index 000000000000,c8be48293638..c8be48293638
mode 000000,100644..100644
--- a/contrib/libarchive/libarchive/test/test_write_format_zip_windows_path.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_zip_windows_path.c
diff --cc contrib/libarchive/tar/test/test_option_P.c
index 000000000000,e63da3e0875c..e63da3e0875c
mode 000000,100644..100644
--- a/contrib/libarchive/tar/test/test_option_P.c
+++ b/contrib/libarchive/tar/test/test_option_P.c
diff --cc lib/libarchive/tests/Makefile
index dc3767c319c3,000000000000..2684d1661e57
mode 100644,000000..100644
--- a/lib/libarchive/tests/Makefile
+++ b/lib/libarchive/tests/Makefile
@@@ -1,689 -1,0 +1,713 @@@
 +.include <src.opts.mk>
 +
 +PACKAGE=	tests
 +
 +WARNS?=		3
 +
 +_LIBARCHIVEDIR=	${SRCTOP}/contrib/libarchive
 +
 +ATF_TESTS_SH+=	functional_test
 +
 +TEST_METADATA.functional_test+=	timeout="600"
 +
 +BINDIR=	${TESTSDIR}
 +
 +PROGS+=	libarchive_test
 +
 +CFLAGS+= -I${.CURDIR} -I${.CURDIR:H} -I${.OBJDIR}
 +CFLAGS+= -I${_LIBARCHIVEDIR}/libarchive -I${_LIBARCHIVEDIR}/libarchive/test
 +CFLAGS+= -I${_LIBARCHIVEDIR}/test_utils
 +
 +CFLAGS.test_utils.c+=	-Wno-cast-align
 +
 +# Uncomment to link against dmalloc
 +#LDADD+= -L/usr/local/lib -ldmalloc
 +#CFLAGS+= -I/usr/local/include -DUSE_DMALLOC
 +
 +.PATH: ${_LIBARCHIVEDIR}/libarchive/test
 +TESTS_SRCS= \
++	test_7zip_filename_encoding.c		\
 +	test_acl_nfs4.c				\
 +	test_acl_pax.c				\
 +	test_acl_platform_nfs4.c		\
 +	test_acl_platform_posix1e.c		\
 +	test_acl_posix1e.c			\
 +	test_acl_text.c				\
++	test_ar_mode.c				\
 +	test_archive_api_feature.c		\
 +	test_archive_clear_error.c		\
 +	test_archive_cmdline.c			\
 +	test_archive_digest.c			\
 +	test_archive_getdate.c			\
 +	test_archive_match_time.c		\
 +	test_archive_match_owner.c		\
 +	test_archive_match_path.c		\
 +	test_archive_pathmatch.c		\
++	test_archive_read.c			\
 +	test_archive_read_add_passphrase.c	\
 +	test_archive_read_close_twice.c		\
 +	test_archive_read_close_twice_open_fd.c	\
 +	test_archive_read_close_twice_open_filename.c	\
 +	test_archive_read_multiple_data_objects.c	\
 +	test_archive_read_next_header_empty.c	\
 +	test_archive_read_next_header_raw.c	\
 +	test_archive_read_open2.c		\
 +	test_archive_read_set_filter_option.c	\
 +	test_archive_read_set_format_option.c	\
 +	test_archive_read_set_option.c		\
 +	test_archive_read_set_options.c		\
 +	test_archive_read_support.c		\
 +	test_archive_set_error.c		\
 +	test_archive_string.c			\
 +	test_archive_string_conversion.c	\
 +	test_archive_write_add_filter_by_name.c	\
 +	test_archive_write_set_filter_option.c	\
 +	test_archive_write_set_format_by_name.c	\
 +	test_archive_write_set_format_filter_by_ext.c \
 +	test_archive_write_set_format_option.c	\
 +	test_archive_write_set_option.c		\
 +	test_archive_write_set_options.c	\
 +	test_archive_write_set_passphrase.c	\
 +	test_bad_fd.c				\
 +	test_compat_bzip2.c			\
 +	test_compat_cpio.c			\
 +	test_compat_gtar.c			\
 +	test_compat_gzip.c			\
 +	test_compat_lz4.c			\
 +	test_compat_lzip.c			\
 +	test_compat_lzma.c			\
 +	test_compat_lzop.c			\
 +	test_compat_mac.c			\
 +	test_compat_perl_archive_tar.c		\
 +	test_compat_plexus_archiver_tar.c	\
 +	test_compat_solaris_tar_acl.c		\
 +	test_compat_solaris_pax_sparse.c	\
 +	test_compat_star_acl.c			\
 +	test_compat_tar_directory.c		\
 +	test_compat_tar_hardlink.c		\
 +	test_compat_uudecode.c			\
 +	test_compat_uudecode_large.c		\
 +	test_compat_xz.c			\
 +	test_compat_zip.c			\
 +	test_compat_zstd.c			\
 +	test_empty_write.c			\
 +	test_entry.c				\
 +	test_entry_strmode.c			\
 +	test_extattr_freebsd.c			\
 +	test_filter_count.c			\
 +	test_gnutar_filename_encoding.c		\
 +	test_link_resolver.c			\
 +	test_open_fd.c				\
 +	test_open_failure.c			\
 +	test_open_file.c			\
 +	test_open_filename.c			\
 +	test_pax_filename_encoding.c		\
 +	test_pax_xattr_header.c			\
 +	test_read_data_large.c			\
 +	test_read_disk.c			\
 +	test_read_disk_directory_traversals.c	\
 +	test_read_disk_entry_from_file.c	\
 +	test_read_extract.c			\
 +	test_read_file_nonexistent.c		\
 +	test_read_filter_compress.c		\
 +	test_read_filter_grzip.c		\
++	test_read_filter_gzip_recursive.c	\
 +	test_read_filter_lrzip.c		\
 +	test_read_filter_lzop.c			\
 +	test_read_filter_lzop_multiple_parts.c	\
 +	test_read_filter_program.c		\
 +	test_read_filter_program_signature.c	\
 +	test_read_filter_uudecode.c		\
 +	test_read_filter_uudecode_raw.c		\
 +	test_read_format_7zip.c			\
 +	test_read_format_7zip_encryption_data.c \
 +	test_read_format_7zip_encryption_header.c	\
 +	test_read_format_7zip_encryption_partially.c	\
 +	test_read_format_7zip_malformed.c	\
 +	test_read_format_7zip_packinfo_digests.c	\
 +	test_read_format_ar.c			\
 +	test_read_format_cab.c			\
 +	test_read_format_cab_filename.c		\
 +	test_read_format_cpio_afio.c		\
 +	test_read_format_cpio_bin.c		\
 +	test_read_format_cpio_bin_Z.c		\
 +	test_read_format_cpio_bin_be.c		\
 +	test_read_format_cpio_bin_bz2.c		\
 +	test_read_format_cpio_bin_gz.c		\
 +	test_read_format_cpio_bin_le.c		\
 +	test_read_format_cpio_bin_lzip.c	\
 +	test_read_format_cpio_bin_lzma.c	\
 +	test_read_format_cpio_bin_xz.c		\
 +	test_read_format_cpio_filename.c	\
 +	test_read_format_cpio_odc.c		\
 +	test_read_format_cpio_svr4_gzip.c	\
 +	test_read_format_cpio_svr4c_Z.c		\
 +	test_read_format_cpio_svr4_bzip2_rpm.c	\
 +	test_read_format_cpio_svr4_gzip_rpm.c	\
 +	test_read_format_empty.c		\
 +	test_read_format_gtar_filename.c	\
 +	test_read_format_gtar_gz.c		\
 +	test_read_format_gtar_lzma.c		\
 +	test_read_format_gtar_sparse.c		\
 +	test_read_format_gtar_sparse_skip_entry.c \
++	test_read_format_huge_rpm.c		\
 +	test_read_format_iso_Z.c		\
 +	test_read_format_iso_multi_extent.c	\
 +	test_read_format_iso_xorriso.c		\
 +	test_read_format_isorr_rr_moved.c	\
 +	test_read_format_isojoliet_bz2.c	\
 +	test_read_format_isojoliet_long.c	\
 +	test_read_format_isojoliet_rr.c		\
 +	test_read_format_isojoliet_versioned.c	\
 +	test_read_format_isorr_bz2.c		\
 +	test_read_format_isorr_ce.c		\
 +	test_read_format_isorr_new_bz2.c	\
 +	test_read_format_isozisofs_bz2.c	\
 +	test_read_format_lha.c			\
 +	test_read_format_lha_bugfix_0.c		\
 +	test_read_format_lha_filename.c		\
 +	test_read_format_lha_filename_utf16.c	\
 +	test_read_format_mtree.c		\
 +	test_read_format_mtree_crash747.c	\
 +	test_read_format_pax_bz2.c		\
 +	test_read_format_rar.c			\
 +	test_read_format_rar5.c			\
++	test_read_format_rar_encryption.c	\
 +	test_read_format_rar_encryption_data.c	\
 +	test_read_format_rar_encryption_header.c	\
 +	test_read_format_rar_encryption_partially.c	\
 +	test_read_format_rar_filter.c		\
 +	test_read_format_rar_invalid1.c		\
 +	test_read_format_raw.c			\
 +	test_read_format_tar.c			\
 +	test_read_format_tar_concatenated.c	\
 +	test_read_format_tar_empty_filename.c	\
 +	test_read_format_tar_empty_pax.c	\
 +	test_read_format_tar_empty_with_gnulabel.c	\
 +	test_read_format_tar_filename.c		\
 +	test_read_format_tar_invalid_pax_size.c \
++	test_read_format_tar_pax_large_attr.c	\
 +	test_read_format_tbz.c			\
 +	test_read_format_tgz.c			\
 +	test_read_format_tlz.c			\
 +	test_read_format_txz.c			\
 +	test_read_format_tz.c			\
 +	test_read_format_ustar_filename.c	\
 +	test_read_format_warc.c			\
 +	test_read_format_xar.c			\
 +	test_read_format_xar_doublelink.c	\
 +	test_read_format_zip.c			\
 +	test_read_format_zip_7075_utf8_paths.c	\
 +	test_read_format_zip_comment_stored.c	\
 +	test_read_format_zip_encryption_data.c	\
 +	test_read_format_zip_encryption_header.c	\
 +	test_read_format_zip_encryption_partially.c	\
 +	test_read_format_zip_extra_padding.c	\
 +	test_read_format_zip_filename.c		\
 +	test_read_format_zip_high_compression.c	\
 +	test_read_format_zip_jar.c		\
 +	test_read_format_zip_mac_metadata.c	\
 +	test_read_format_zip_malformed.c	\
 +	test_read_format_zip_msdos.c		\
 +	test_read_format_zip_nested.c		\
 +	test_read_format_zip_nofiletype.c	\
 +	test_read_format_zip_padded.c		\
 +	test_read_format_zip_sfx.c		\
 +	test_read_format_zip_traditional_encryption_data.c	\
 +	test_read_format_zip_winzip_aes.c	\
 +	test_read_format_zip_winzip_aes_large.c	\
 +	test_read_format_zip_with_invalid_traditional_eocd.c	\
 +	test_read_format_zip_zip64.c		\
 +	test_read_large.c			\
 +	test_read_pax_xattr_rht_security_selinux.c	\
 +	test_read_pax_xattr_schily.c		\
 +	test_read_pax_truncated.c		\
 +	test_read_position.c			\
 +	test_read_set_format.c			\
 +	test_read_too_many_filters.c		\
 +	test_read_truncated.c			\
 +	test_read_truncated_filter.c		\
 +	test_short_writes.c			\
 +	test_sparse_basic.c			\
 +	test_tar_filenames.c			\
 +	test_tar_large.c			\
 +	test_warn_missing_hardlink_target.c	\
 +	test_ustar_filenames.c			\
 +	test_ustar_filename_encoding.c		\
 +	test_write_disk.c			\
 +	test_write_disk_appledouble.c		\
 +	test_write_disk_failures.c		\
 +	test_write_disk_fixup.c			\
 +	test_write_disk_hardlink.c		\
 +	test_write_disk_hfs_compression.c	\
 +	test_write_disk_lookup.c		\
 +	test_write_disk_mac_metadata.c		\
 +	test_write_disk_no_hfs_compression.c	\
 +	test_write_disk_perms.c			\
 +	test_write_disk_secure.c		\
++	test_write_disk_secure_noabsolutepaths.c	\
 +	test_write_disk_secure744.c		\
 +	test_write_disk_secure745.c		\
 +	test_write_disk_secure746.c		\
 +	test_write_disk_sparse.c		\
 +	test_write_disk_symlink.c		\
 +	test_write_disk_times.c			\
 +	test_write_filter_b64encode.c		\
 +	test_write_filter_bzip2.c		\
 +	test_write_filter_compress.c		\
 +	test_write_filter_gzip.c		\
 +	test_write_filter_gzip_timestamp.c	\
 +	test_write_filter_lrzip.c		\
 +	test_write_filter_lz4.c			\
 +	test_write_filter_lzip.c		\
 +	test_write_filter_lzma.c		\
 +	test_write_filter_lzop.c		\
 +	test_write_filter_program.c		\
 +	test_write_filter_uuencode.c		\
 +	test_write_filter_xz.c			\
 +	test_write_filter_zstd.c		\
 +	test_write_format_7zip.c		\
 +	test_write_format_7zip_empty.c		\
 +	test_write_format_7zip_large.c		\
 +	test_write_format_ar.c			\
 +	test_write_format_cpio.c		\
 +	test_write_format_cpio_empty.c		\
 +	test_write_format_cpio_newc.c		\
 +	test_write_format_cpio_odc.c		\
 +	test_write_format_gnutar.c		\
 +	test_write_format_gnutar_filenames.c	\
 +	test_write_format_iso9660.c		\
 +	test_write_format_iso9660_boot.c	\
 +	test_write_format_iso9660_empty.c	\
 +	test_write_format_iso9660_filename.c	\
 +	test_write_format_iso9660_zisofs.c	\
 +	test_write_format_mtree.c		\
 +	test_write_format_mtree_absolute_path.c	\
 +	test_write_format_mtree_classic.c	\
 +	test_write_format_mtree_classic_indent.c	\
 +	test_write_format_mtree_fflags.c	\
 +	test_write_format_mtree_no_separator.c	\
 +	test_write_format_mtree_quoted_filename.c	\
 +	test_write_format_pax.c			\
 +	test_write_format_raw.c			\
 +	test_write_format_raw_b64.c		\
 +	test_write_format_shar_empty.c		\
 +	test_write_format_tar.c			\
 +	test_write_format_tar_empty.c		\
 +	test_write_format_tar_sparse.c		\
 +	test_write_format_tar_ustar.c		\
 +	test_write_format_tar_v7tar.c		\
 +	test_write_format_warc.c		\
 +	test_write_format_warc_empty.c		\
 +	test_write_format_xar.c			\
 +	test_write_format_xar_empty.c		\
 +	test_write_format_zip.c			\
 +	test_write_format_zip_compression_store.c	\
 +	test_write_format_zip_empty.c		\
*** 675 LINES SKIPPED ***