pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/archivers/libarchive



Module Name:    pkgsrc
Committed By:   adam
Date:           Thu Mar 26 11:20:08 UTC 2026

Modified Files:
        pkgsrc/archivers/libarchive: Makefile.common
        pkgsrc/archivers/libarchive/files: Makefile.am Makefile.in NEWS
            configure configure.ac
        pkgsrc/archivers/libarchive/files/build: version
        pkgsrc/archivers/libarchive/files/build/cmake: config.h.in
        pkgsrc/archivers/libarchive/files/cpio/test: test_format_newc.c
        pkgsrc/archivers/libarchive/files/doc/html: archive_entry.3.html
            archive_entry_acl.3.html archive_entry_linkify.3.html
            archive_entry_misc.3.html archive_entry_paths.3.html
            archive_entry_perms.3.html archive_entry_stat.3.html
            archive_entry_time.3.html archive_read.3.html
            archive_read_add_passphrase.3.html archive_read_data.3.html
            archive_read_disk.3.html archive_read_extract.3.html
            archive_read_filter.3.html archive_read_format.3.html
            archive_read_free.3.html archive_read_header.3.html
            archive_read_new.3.html archive_read_open.3.html
            archive_read_set_options.3.html archive_util.3.html
            archive_write.3.html archive_write_blocksize.3.html
            archive_write_data.3.html archive_write_disk.3.html
            archive_write_filter.3.html archive_write_finish_entry.3.html
            archive_write_format.3.html archive_write_free.3.html
            archive_write_header.3.html archive_write_new.3.html
            archive_write_open.3.html archive_write_set_options.3.html
            archive_write_set_passphrase.3.html bsdcpio.1.html bsdtar.1.html
            cpio.5.html libarchive-formats.5.html libarchive.3.html
            libarchive_changes.3.html libarchive_internals.3.html mtree.5.html
            tar.5.html
        pkgsrc/archivers/libarchive/files/doc/pdf: archive_entry.3.pdf
            archive_entry_acl.3.pdf archive_entry_linkify.3.pdf
            archive_entry_misc.3.pdf archive_entry_paths.3.pdf
            archive_entry_perms.3.pdf archive_entry_stat.3.pdf
            archive_entry_time.3.pdf archive_read.3.pdf
            archive_read_add_passphrase.3.pdf archive_read_data.3.pdf
            archive_read_disk.3.pdf archive_read_extract.3.pdf
            archive_read_filter.3.pdf archive_read_format.3.pdf
            archive_read_free.3.pdf archive_read_header.3.pdf
            archive_read_new.3.pdf archive_read_open.3.pdf
            archive_read_set_options.3.pdf archive_util.3.pdf
            archive_write.3.pdf archive_write_blocksize.3.pdf
            archive_write_data.3.pdf archive_write_disk.3.pdf
            archive_write_filter.3.pdf archive_write_finish_entry.3.pdf
            archive_write_format.3.pdf archive_write_free.3.pdf
            archive_write_header.3.pdf archive_write_new.3.pdf
            archive_write_open.3.pdf archive_write_set_options.3.pdf
            archive_write_set_passphrase.3.pdf bsdcpio.1.pdf bsdtar.1.pdf
            cpio.5.pdf libarchive-formats.5.pdf libarchive.3.pdf
            libarchive_changes.3.pdf libarchive_internals.3.pdf mtree.5.pdf
            tar.5.pdf
        pkgsrc/archivers/libarchive/files/libarchive: archive.h archive_acl.c
            archive_cryptor_private.h archive_entry.h archive_hmac.c
            archive_read_open_filename.c archive_read_support_filter_program.c
            archive_read_support_format_7zip.c
            archive_read_support_format_cab.c archive_read_support_format_lha.c
            archive_read_support_format_mtree.c
            archive_read_support_format_rar5.c archive_string.c
            archive_write_disk_posix.c archive_write_set_format_gnutar.c
            archive_write_set_format_ustar.c archive_write_set_format_v7tar.c
            archive_write_set_format_zip.c
        pkgsrc/archivers/libarchive/files/libarchive/test: CMakeLists.txt
            list.h test_archive_string_conversion.c
            test_gnutar_filename_encoding.c test_read_format_7zip.c
            test_ustar_filename_encoding.c test_write_disk.c
            test_write_disk_perms.c test_zip_filename_encoding.c
        pkgsrc/archivers/libarchive/files/test_utils: test_common.h test_main.c
        pkgsrc/archivers/libarchive/files/unzip: bsdunzip.c

Log Message:
libarchive: updated to 3.8.6

Libarchive 3.8.6 is a security and bugfix release.

Notable fixes:

libarchive: fix incompatibility with Nettle 4.x
libarchive: fix NULL pointer dereference in archive_acl_from_text_w()
bsdunzip: fix ISO week year and Gregorian year confusion
7zip: ix SEGV in check_7zip_header_in_sfx via ELF offset validation
7zip: fix out-of-bounds access on ELF 64-bit header
RAR5 reader: fix infinite loop in rar5 decompression
RAR5 reader: fix potential memory leak
RAR5: fix SIGSEGV when archive_read_support_format_rar5 is called twice
CAB reader: fix memory leak on repeated calls to archive_read_support_format_cab
mtree reader: Fix file descriptor leak in mtree parser cleanup
various small bugfixes in code and documentation


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 pkgsrc/archivers/libarchive/Makefile.common
cvs rdiff -u -r1.23 -r1.24 pkgsrc/archivers/libarchive/files/Makefile.am
cvs rdiff -u -r1.25 -r1.26 pkgsrc/archivers/libarchive/files/Makefile.in \
    pkgsrc/archivers/libarchive/files/NEWS
cvs rdiff -u -r1.34 -r1.35 pkgsrc/archivers/libarchive/files/configure
cvs rdiff -u -r1.33 -r1.34 pkgsrc/archivers/libarchive/files/configure.ac
cvs rdiff -u -r1.20 -r1.21 pkgsrc/archivers/libarchive/files/build/version
cvs rdiff -u -r1.16 -r1.17 \
    pkgsrc/archivers/libarchive/files/build/cmake/config.h.in
cvs rdiff -u -r1.11 -r1.12 \
    pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c
cvs rdiff -u -r1.20 -r1.21 \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html \
    pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html \
    pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html \
    pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html \
    pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html \
    pkgsrc/archivers/libarchive/files/doc/html/tar.5.html
cvs rdiff -u -r1.19 -r1.20 \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html
cvs rdiff -u -r1.14 -r1.15 \
    pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html
cvs rdiff -u -r1.16 -r1.17 \
    pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html \
    pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html
cvs rdiff -u -r1.20 -r1.21 \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_disk.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_util.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_disk.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/bsdcpio.1.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/bsdtar.1.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/cpio.5.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/libarchive-formats.5.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/libarchive.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/libarchive_internals.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/mtree.5.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/tar.5.pdf
cvs rdiff -u -r1.19 -r1.20 \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_acl.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_linkify.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_paths.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_perms.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_stat.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_time.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_data.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_extract.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_filter.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_format.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_free.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_header.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_new.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_open.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_set_options.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_blocksize.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_data.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_filter.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_finish_entry.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_format.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_free.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_header.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_new.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_open.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_set_options.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/libarchive_changes.3.pdf
cvs rdiff -u -r1.14 -r1.15 \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_misc.3.pdf
cvs rdiff -u -r1.16 -r1.17 \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_add_passphrase.3.pdf \
    pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_set_passphrase.3.pdf
cvs rdiff -u -r1.26 -r1.27 \
    pkgsrc/archivers/libarchive/files/libarchive/archive.h
cvs rdiff -u -r1.10 -r1.11 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c \
    pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c
cvs rdiff -u -r1.9 -r1.10 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c
cvs rdiff -u -r1.22 -r1.23 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h
cvs rdiff -u -r1.4 -r1.5 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c
cvs rdiff -u -r1.13 -r1.14 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c \
    pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c
cvs rdiff -u -r1.7 -r1.8 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c \
    pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c
cvs rdiff -u -r1.15 -r1.16 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c
cvs rdiff -u -r1.14 -r1.15 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c
cvs rdiff -u -r1.19 -r1.20 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c
cvs rdiff -u -r1.18 -r1.19 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_string.c \
    pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c
cvs rdiff -u -r1.11 -r1.12 \
    pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c
cvs rdiff -u -r1.18 -r1.19 \
    pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt
cvs rdiff -u -r1.21 -r1.22 \
    pkgsrc/archivers/libarchive/files/libarchive/test/list.h
cvs rdiff -u -r1.7 -r1.8 \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c
cvs rdiff -u -r1.4 -r1.5 \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c
cvs rdiff -u -r1.10 -r1.11 \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c
cvs rdiff -u -r1.6 -r1.7 \
    pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c
cvs rdiff -u -r1.13 -r1.14 \
    pkgsrc/archivers/libarchive/files/test_utils/test_common.h
cvs rdiff -u -r1.14 -r1.15 \
    pkgsrc/archivers/libarchive/files/test_utils/test_main.c
cvs rdiff -u -r1.10 -r1.11 pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/archivers/libarchive/Makefile.common
diff -u pkgsrc/archivers/libarchive/Makefile.common:1.26 pkgsrc/archivers/libarchive/Makefile.common:1.27
--- pkgsrc/archivers/libarchive/Makefile.common:1.26    Tue Jan  6 11:55:20 2026
+++ pkgsrc/archivers/libarchive/Makefile.common Thu Mar 26 11:20:04 2026
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile.common,v 1.26 2026/01/06 11:55:20 adam Exp $
+# $NetBSD: Makefile.common,v 1.27 2026/03/26 11:20:04 adam Exp $
 # used by archivers/bsdtar/Makefile
 # used by archivers/libarchive/Makefile
 
-DISTNAME=      libarchive-3.8.5
+DISTNAME=      libarchive-3.8.6
 CATEGORIES=    archivers
 MASTER_SITES=  https://www.libarchive.org/downloads/
 DISTFILES=     # empty

Index: pkgsrc/archivers/libarchive/files/Makefile.am
diff -u pkgsrc/archivers/libarchive/files/Makefile.am:1.23 pkgsrc/archivers/libarchive/files/Makefile.am:1.24
--- pkgsrc/archivers/libarchive/files/Makefile.am:1.23  Tue Dec 23 14:01:21 2025
+++ pkgsrc/archivers/libarchive/files/Makefile.am       Thu Mar 26 11:20:04 2026
@@ -516,6 +516,7 @@ libarchive_test_SOURCES= \
        libarchive/test/test_read_format_lha_bugfix_0.c \
        libarchive/test/test_read_format_lha_filename.c \
        libarchive/test/test_read_format_lha_filename_utf16.c \
+       libarchive/test/test_read_format_lha_oversize_header.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -528,6 +529,7 @@ libarchive_test_SOURCES= \
        libarchive/test/test_read_format_rar_invalid1.c \
        libarchive/test/test_read_format_rar_overflow.c \
        libarchive/test/test_read_format_rar5.c \
+       libarchive/test/test_read_format_rar5_loop_bug.c \
        libarchive/test/test_read_format_raw.c \
        libarchive/test/test_read_format_tar.c \
        libarchive/test/test_read_format_tar_V_negative_size.c \
@@ -829,9 +831,11 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_7zip_lzma2_sparc.7z.uu \
        libarchive/test/test_read_format_7zip_malformed.7z.uu \
        libarchive/test/test_read_format_7zip_malformed2.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed3.7z.uu \
        libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu \
        libarchive/test/test_read_format_7zip_ppmd.7z.uu \
        libarchive/test/test_read_format_7zip_sfx_elf.elf.uu \
+       libarchive/test/test_read_format_7zip_sfx_elf64trunc.elf.uu \
        libarchive/test/test_read_format_7zip_sfx_modified_pe.exe.uu \
        libarchive/test/test_read_format_7zip_sfx_pe.exe.uu \
        libarchive/test/test_read_format_7zip_solid_zstd.7z.uu \
@@ -893,6 +897,7 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_lha_lh0.lzh.uu \
        libarchive/test/test_read_format_lha_lh6.lzh.uu \
        libarchive/test/test_read_format_lha_lh7.lzh.uu \
+       libarchive/test/test_read_format_lha_oversize_header.lzh.uu \
        libarchive/test/test_read_format_lha_withjunk.lzh.uu \
        libarchive/test/test_read_format_mtree.mtree.uu \
        libarchive/test/test_read_format_mtree_nomagic.mtree.uu \
@@ -947,6 +952,7 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu \
        libarchive/test/test_read_format_rar5_leftshift1.rar.uu \
        libarchive/test/test_read_format_rar5_leftshift2.rar.uu \
+       libarchive/test/test_read_format_rar5_loop_bug.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu \

Index: pkgsrc/archivers/libarchive/files/Makefile.in
diff -u pkgsrc/archivers/libarchive/files/Makefile.in:1.25 pkgsrc/archivers/libarchive/files/Makefile.in:1.26
--- pkgsrc/archivers/libarchive/files/Makefile.in:1.25  Tue Dec 23 14:01:21 2025
+++ pkgsrc/archivers/libarchive/files/Makefile.in       Thu Mar 26 11:20:04 2026
@@ -951,6 +951,7 @@ am__libarchive_test_SOURCES_DIST = libar
        libarchive/test/test_read_format_lha_bugfix_0.c \
        libarchive/test/test_read_format_lha_filename.c \
        libarchive/test/test_read_format_lha_filename_utf16.c \
+       libarchive/test/test_read_format_lha_oversize_header.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -963,6 +964,7 @@ am__libarchive_test_SOURCES_DIST = libar
        libarchive/test/test_read_format_rar_invalid1.c \
        libarchive/test/test_read_format_rar_overflow.c \
        libarchive/test/test_read_format_rar5.c \
+       libarchive/test/test_read_format_rar5_loop_bug.c \
        libarchive/test/test_read_format_raw.c \
        libarchive/test/test_read_format_tar.c \
        libarchive/test/test_read_format_tar_V_negative_size.c \
@@ -1395,6 +1397,7 @@ am_libarchive_test_OBJECTS = $(am__objec
        libarchive/test/test-test_read_format_lha_bugfix_0.$(OBJEXT) \
        libarchive/test/test-test_read_format_lha_filename.$(OBJEXT) \
        libarchive/test/test-test_read_format_lha_filename_utf16.$(OBJEXT) \
+       libarchive/test/test-test_read_format_lha_oversize_header.$(OBJEXT) \
        libarchive/test/test-test_read_format_mtree.$(OBJEXT) \
        libarchive/test/test-test_read_format_mtree_crash747.$(OBJEXT) \
        libarchive/test/test-test_read_format_pax_bz2.$(OBJEXT) \
@@ -1407,6 +1410,7 @@ am_libarchive_test_OBJECTS = $(am__objec
        libarchive/test/test-test_read_format_rar_invalid1.$(OBJEXT) \
        libarchive/test/test-test_read_format_rar_overflow.$(OBJEXT) \
        libarchive/test/test-test_read_format_rar5.$(OBJEXT) \
+       libarchive/test/test-test_read_format_rar5_loop_bug.$(OBJEXT) \
        libarchive/test/test-test_read_format_raw.$(OBJEXT) \
        libarchive/test/test-test_read_format_tar.$(OBJEXT) \
        libarchive/test/test-test_read_format_tar_V_negative_size.$(OBJEXT) \
@@ -2056,11 +2060,13 @@ am__depfiles_remade = cat/$(DEPDIR)/bsdc
        libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po \
+       libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_rar.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_rar5.Po \
+       libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po \
@@ -3277,6 +3283,7 @@ libarchive_test_SOURCES = \
        libarchive/test/test_read_format_lha_bugfix_0.c \
        libarchive/test/test_read_format_lha_filename.c \
        libarchive/test/test_read_format_lha_filename_utf16.c \
+       libarchive/test/test_read_format_lha_oversize_header.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -3289,6 +3296,7 @@ libarchive_test_SOURCES = \
        libarchive/test/test_read_format_rar_invalid1.c \
        libarchive/test/test_read_format_rar_overflow.c \
        libarchive/test/test_read_format_rar5.c \
+       libarchive/test/test_read_format_rar5_loop_bug.c \
        libarchive/test/test_read_format_raw.c \
        libarchive/test/test_read_format_tar.c \
        libarchive/test/test_read_format_tar_V_negative_size.c \
@@ -3582,9 +3590,11 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_read_format_7zip_lzma2_sparc.7z.uu \
        libarchive/test/test_read_format_7zip_malformed.7z.uu \
        libarchive/test/test_read_format_7zip_malformed2.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed3.7z.uu \
        libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu \
        libarchive/test/test_read_format_7zip_ppmd.7z.uu \
        libarchive/test/test_read_format_7zip_sfx_elf.elf.uu \
+       libarchive/test/test_read_format_7zip_sfx_elf64trunc.elf.uu \
        libarchive/test/test_read_format_7zip_sfx_modified_pe.exe.uu \
        libarchive/test/test_read_format_7zip_sfx_pe.exe.uu \
        libarchive/test/test_read_format_7zip_solid_zstd.7z.uu \
@@ -3646,6 +3656,7 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_read_format_lha_lh0.lzh.uu \
        libarchive/test/test_read_format_lha_lh6.lzh.uu \
        libarchive/test/test_read_format_lha_lh7.lzh.uu \
+       libarchive/test/test_read_format_lha_oversize_header.lzh.uu \
        libarchive/test/test_read_format_lha_withjunk.lzh.uu \
        libarchive/test/test_read_format_mtree.mtree.uu \
        libarchive/test/test_read_format_mtree_nomagic.mtree.uu \
@@ -3700,6 +3711,7 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu \
        libarchive/test/test_read_format_rar5_leftshift1.rar.uu \
        libarchive/test/test_read_format_rar5_leftshift2.rar.uu \
+       libarchive/test/test_read_format_rar5_loop_bug.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu \
        libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu \
@@ -6018,6 +6030,9 @@ libarchive/test/test-test_read_format_lh
 libarchive/test/test-test_read_format_lha_filename_utf16.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_lha_oversize_header.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/test-test_read_format_mtree.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -6054,6 +6069,9 @@ libarchive/test/test-test_read_format_ra
 libarchive/test/test-test_read_format_rar5.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_rar5_loop_bug.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/test-test_read_format_raw.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -7007,11 +7025,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar5.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po@am__quote@ # am--include-marker
@@ -13860,6 +13880,20 @@ libarchive/test/test-test_read_format_lh
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_lha_filename_utf16.obj `if test -f 'libarchive/test/test_read_format_lha_filename_utf16.c'; then $(CYGPATH_W) 
'libarchive/test/test_read_format_lha_filename_utf16.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_filename_utf16.c'; fi`
 
+libarchive/test/test-test_read_format_lha_oversize_header.o: libarchive/test/test_read_format_lha_oversize_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
libarchive/test/test-test_read_format_lha_oversize_header.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Tpo -c -o 
libarchive/test/test-test_read_format_lha_oversize_header.o `test -f 'libarchive/test/test_read_format_lha_oversize_header.c' || echo 
'$(srcdir)/'`libarchive/test/test_read_format_lha_oversize_header.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_oversize_header.c' object='libarchive/test/test-test_read_format_lha_oversize_header.o' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_lha_oversize_header.o `test -f 'libarchive/test/test_read_format_lha_oversize_header.c' || echo 
'$(srcdir)/'`libarchive/test/test_read_format_lha_oversize_header.c
+
+libarchive/test/test-test_read_format_lha_oversize_header.obj: libarchive/test/test_read_format_lha_oversize_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
libarchive/test/test-test_read_format_lha_oversize_header.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Tpo -c -o 
libarchive/test/test-test_read_format_lha_oversize_header.obj `if test -f 'libarchive/test/test_read_format_lha_oversize_header.c'; then $(CYGPATH_W) 
'libarchive/test/test_read_format_lha_oversize_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_oversize_header.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_oversize_header.c' object='libarchive/test/test-test_read_format_lha_oversize_header.obj' libtool=no 
@AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_lha_oversize_header.obj `if test -f 'libarchive/test/test_read_format_lha_oversize_header.c'; then $(CYGPATH_W) 
'libarchive/test/test_read_format_lha_oversize_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_oversize_header.c'; fi`
+
 libarchive/test/test-test_read_format_mtree.o: libarchive/test/test_read_format_mtree.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_mtree.o -MD 
-MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Tpo -c -o libarchive/test/test-test_read_format_mtree.o `test -f 'libarchive/test/test_read_format_mtree.c' || echo 
'$(srcdir)/'`libarchive/test/test_read_format_mtree.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
@@ -14028,6 +14062,20 @@ libarchive/test/test-test_read_format_ra
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_rar5.obj `if test -f 'libarchive/test/test_read_format_rar5.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar5.c'; else $(CYGPATH_W) 
'$(srcdir)/libarchive/test/test_read_format_rar5.c'; fi`
 
+libarchive/test/test-test_read_format_rar5_loop_bug.o: libarchive/test/test_read_format_rar5_loop_bug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
libarchive/test/test-test_read_format_rar5_loop_bug.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Tpo -c -o libarchive/test/test-test_read_format_rar5_loop_bug.o `test 
-f 'libarchive/test/test_read_format_rar5_loop_bug.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar5_loop_bug.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar5_loop_bug.c' object='libarchive/test/test-test_read_format_rar5_loop_bug.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_rar5_loop_bug.o `test -f 'libarchive/test/test_read_format_rar5_loop_bug.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar5_loop_bug.c
+
+libarchive/test/test-test_read_format_rar5_loop_bug.obj: libarchive/test/test_read_format_rar5_loop_bug.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT 
libarchive/test/test-test_read_format_rar5_loop_bug.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Tpo -c -o libarchive/test/test-test_read_format_rar5_loop_bug.obj `if 
test -f 'libarchive/test/test_read_format_rar5_loop_bug.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar5_loop_bug.c'; else $(CYGPATH_W) 
'$(srcdir)/libarchive/test/test_read_format_rar5_loop_bug.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar5_loop_bug.c' object='libarchive/test/test-test_read_format_rar5_loop_bug.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o 
libarchive/test/test-test_read_format_rar5_loop_bug.obj `if test -f 'libarchive/test/test_read_format_rar5_loop_bug.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar5_loop_bug.c'; else 
$(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar5_loop_bug.c'; fi`
+
 libarchive/test/test-test_read_format_raw.o: libarchive/test/test_read_format_raw.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_raw.o -MD -MP 
-MF libarchive/test/$(DEPDIR)/test-test_read_format_raw.Tpo -c -o libarchive/test/test-test_read_format_raw.o `test -f 'libarchive/test/test_read_format_raw.c' || echo 
'$(srcdir)/'`libarchive/test/test_read_format_raw.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_raw.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_raw.Po
@@ -17297,11 +17345,13 @@ distclean: distclean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar5.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po
@@ -18106,11 +18156,13 @@ maintainer-clean: maintainer-clean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_oversize_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar5.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar5_loop_bug.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_data.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_rar_encryption_header.Po
Index: pkgsrc/archivers/libarchive/files/NEWS
diff -u pkgsrc/archivers/libarchive/files/NEWS:1.25 pkgsrc/archivers/libarchive/files/NEWS:1.26
--- pkgsrc/archivers/libarchive/files/NEWS:1.25 Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/NEWS      Thu Mar 26 11:20:04 2026
@@ -1,3 +1,5 @@
+Mar 10, 2026: libarchive 3.8.6 released
+
 Jan 05, 2026: libarchive 3.8.5 released
 
 Dec 01, 2025: libarchive 3.8.4 released

Index: pkgsrc/archivers/libarchive/files/configure
diff -u pkgsrc/archivers/libarchive/files/configure:1.34 pkgsrc/archivers/libarchive/files/configure:1.35
--- pkgsrc/archivers/libarchive/files/configure:1.34    Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/configure Thu Mar 26 11:20:04 2026
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for libarchive 3.8.5.
+# Generated by GNU Autoconf 2.72 for libarchive 3.8.6.
 #
 # Report bugs to <libarchive-discuss%googlegroups.com@localhost>.
 #
@@ -614,8 +614,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libarchive'
 PACKAGE_TARNAME='libarchive'
-PACKAGE_VERSION='3.8.5'
-PACKAGE_STRING='libarchive 3.8.5'
+PACKAGE_VERSION='3.8.6'
+PACKAGE_STRING='libarchive 3.8.6'
 PACKAGE_BUGREPORT='libarchive-discuss%googlegroups.com@localhost'
 PACKAGE_URL=''
 
@@ -1442,7 +1442,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures libarchive 3.8.5 to adapt to many kinds of systems.
+'configure' configures libarchive 3.8.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1513,7 +1513,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libarchive 3.8.5:";;
+     short | recursive ) echo "Configuration of libarchive 3.8.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1698,7 +1698,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libarchive configure 3.8.5
+libarchive configure 3.8.6
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2518,7 +2518,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libarchive $as_me 3.8.5, which was
+It was created by libarchive $as_me 3.8.6, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4002,7 +4002,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libarchive'
- VERSION='3.8.5'
+ VERSION='3.8.6'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -4099,7 +4099,7 @@ AM_DEFAULT_VERBOSITY=0
 
 # Libtool interface version bumps on any API change, so increments
 # whenever libarchive minor version does.
-ARCHIVE_MINOR=$(( (3008005 / 1000) % 1000 ))
+ARCHIVE_MINOR=$(( (3008006 / 1000) % 1000 ))
 # Libarchive 2.7 == libtool interface 9 = 2 + 7
 # Libarchive 2.8 == libtool interface 10 = 2 + 8
 # Libarchive 2.9 == libtool interface 11 = 2 + 9
@@ -4107,7 +4107,7 @@ ARCHIVE_MINOR=$(( (3008005 / 1000) % 100
 # Libarchive 3.1 == libtool interface 13
 ARCHIVE_INTERFACE=`echo $((13 + ${ARCHIVE_MINOR}))`
 # Libarchive revision is bumped on any source change === libtool revision
-ARCHIVE_REVISION=$(( 3008005 % 1000 ))
+ARCHIVE_REVISION=$(( 3008006 % 1000 ))
 # Libarchive minor is bumped on any interface addition === libtool age
 ARCHIVE_LIBTOOL_VERSION=$ARCHIVE_INTERFACE:$ARCHIVE_REVISION:$ARCHIVE_MINOR
 
@@ -4116,33 +4116,33 @@ ARCHIVE_LIBTOOL_VERSION=$ARCHIVE_INTERFA
 printf "%s\n" "#define __LIBARCHIVE_CONFIG_H_INCLUDED 1" >>confdefs.h
 
 
-printf "%s\n" "#define LIBARCHIVE_VERSION_STRING \"3.8.5\"" >>confdefs.h
+printf "%s\n" "#define LIBARCHIVE_VERSION_STRING \"3.8.6\"" >>confdefs.h
 
 
-printf "%s\n" "#define LIBARCHIVE_VERSION_NUMBER \"3008005\"" >>confdefs.h
+printf "%s\n" "#define LIBARCHIVE_VERSION_NUMBER \"3008006\"" >>confdefs.h
 
 
-printf "%s\n" "#define BSDCPIO_VERSION_STRING \"3.8.5\"" >>confdefs.h
+printf "%s\n" "#define BSDCPIO_VERSION_STRING \"3.8.6\"" >>confdefs.h
 
 
-printf "%s\n" "#define BSDTAR_VERSION_STRING \"3.8.5\"" >>confdefs.h
+printf "%s\n" "#define BSDTAR_VERSION_STRING \"3.8.6\"" >>confdefs.h
 
 
-printf "%s\n" "#define BSDCAT_VERSION_STRING \"3.8.5\"" >>confdefs.h
+printf "%s\n" "#define BSDCAT_VERSION_STRING \"3.8.6\"" >>confdefs.h
 
 
-printf "%s\n" "#define BSDUNZIP_VERSION_STRING \"3.8.5\"" >>confdefs.h
+printf "%s\n" "#define BSDUNZIP_VERSION_STRING \"3.8.6\"" >>confdefs.h
 
 
 # The shell variables here must be the same as the AC_SUBST() variables
 # below, but the shell variable names apparently cannot be the same as
 # the m4 macro names above.  Why?  Ask autoconf.
-BSDCPIO_VERSION_STRING=3.8.5
-BSDTAR_VERSION_STRING=3.8.5
-BSDCAT_VERSION_STRING=3.8.5
-BSDUNZIP_VERSION_STRING=3.8.5
-LIBARCHIVE_VERSION_STRING=3.8.5
-LIBARCHIVE_VERSION_NUMBER=3008005
+BSDCPIO_VERSION_STRING=3.8.6
+BSDTAR_VERSION_STRING=3.8.6
+BSDCAT_VERSION_STRING=3.8.6
+BSDUNZIP_VERSION_STRING=3.8.6
+LIBARCHIVE_VERSION_STRING=3.8.6
+LIBARCHIVE_VERSION_NUMBER=3008006
 
 # Substitute the above version numbers into the various files below.
 # Yes, I believe this is the fourth time we define what are essentially
@@ -26364,7 +26364,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libarchive $as_me 3.8.5, which was
+This file was extended by libarchive $as_me 3.8.6, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -26432,7 +26432,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-libarchive config.status 3.8.5
+libarchive config.status 3.8.6
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 

Index: pkgsrc/archivers/libarchive/files/configure.ac
diff -u pkgsrc/archivers/libarchive/files/configure.ac:1.33 pkgsrc/archivers/libarchive/files/configure.ac:1.34
--- pkgsrc/archivers/libarchive/files/configure.ac:1.33 Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/configure.ac      Thu Mar 26 11:20:05 2026
@@ -4,8 +4,8 @@ dnl First, define all of the version num
 dnl In particular, this allows the version macro to be used in AC_INIT
 
 dnl These first two version numbers are updated automatically on each release.
-m4_define([LIBARCHIVE_VERSION_S],[3.8.5])
-m4_define([LIBARCHIVE_VERSION_N],[3008005])
+m4_define([LIBARCHIVE_VERSION_S],[3.8.6])
+m4_define([LIBARCHIVE_VERSION_N],[3008006])
 
 dnl bsdtar and bsdcpio versioning tracks libarchive
 m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())

Index: pkgsrc/archivers/libarchive/files/build/version
diff -u pkgsrc/archivers/libarchive/files/build/version:1.20 pkgsrc/archivers/libarchive/files/build/version:1.21
--- pkgsrc/archivers/libarchive/files/build/version:1.20        Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/build/version     Thu Mar 26 11:20:05 2026
@@ -1 +1 @@
-3008005
+3008006

Index: pkgsrc/archivers/libarchive/files/build/cmake/config.h.in
diff -u pkgsrc/archivers/libarchive/files/build/cmake/config.h.in:1.16 pkgsrc/archivers/libarchive/files/build/cmake/config.h.in:1.17
--- pkgsrc/archivers/libarchive/files/build/cmake/config.h.in:1.16      Sun Nov  2 08:52:11 2025
+++ pkgsrc/archivers/libarchive/files/build/cmake/config.h.in   Thu Mar 26 11:20:05 2026
@@ -642,6 +642,9 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `getea' function. */
 #cmakedefine HAVE_GETEA 1
 
+/* Define to 1 if you have the `getegid' function. */
+#cmakedefine HAVE_GETEGID 1
+
 /* Define to 1 if you have the `geteuid' function. */
 #cmakedefine HAVE_GETEUID 1
 

Index: pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c
diff -u pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c:1.11 pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c:1.12
--- pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c:1.11 Tue Jul  1 15:14:43 2025
+++ pkgsrc/archivers/libarchive/files/cpio/test/test_format_newc.c      Thu Mar 26 11:20:05 2026
@@ -6,6 +6,13 @@
  */
 #include "test.h"
 
+#ifdef HAVE_GETEUID
+#define getuid() geteuid()
+#endif
+#ifdef HAVE_GETEGID
+#define getgid() getegid()
+#endif
+
 /* Number of bytes needed to pad 'n' to multiple of 'block', assuming
  * that 'block' is a power of two. This trick can be more easily
  * remembered as -n & (block - 1), but many compilers quite reasonably

Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html:1.20        Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry.3.html     Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html:1.20 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read.3.html      Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html:1.20    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_disk.3.html Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html:1.20 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_util.3.html      Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html:1.20        Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write.3.html     Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html:1.20   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_disk.3.html        Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html:1.20      Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/bsdcpio.1.html   Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:46 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:30 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html:1.20       Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/bsdtar.1.html    Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:46 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:30 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html:1.20 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/cpio.5.html      Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html:1.20   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/libarchive-formats.5.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html:1.20   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/libarchive.3.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html:1.20 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/libarchive_internals.3.html      Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html:1.20        Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/mtree.5.html     Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/tar.5.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/tar.5.html:1.20 pkgsrc/archivers/libarchive/files/doc/html/tar.5.html:1.21
--- pkgsrc/archivers/libarchive/files/doc/html/tar.5.html:1.20  Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/tar.5.html       Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:30 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>

Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html:1.19    Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_acl.3.html Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html:1.19        Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html     Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html:1.19  Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_paths.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html:1.19  Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_perms.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html:1.19   Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_stat.3.html        Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html:1.19   Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_time.3.html        Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html:1.19    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_data.3.html Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html:1.19 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_extract.3.html      Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html:1.19  Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_filter.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html:1.19  Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_format.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html:1.19    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_free.3.html Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html:1.19  Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_header.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html:1.19     Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_new.3.html  Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html:1.19    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_open.3.html Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html:1.19     Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_set_options.3.html  Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html:1.19      Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html   Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html:1.19   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_data.3.html        Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html:1.19 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_filter.3.html      Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html:1.19   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:28 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html:1.19 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_format.3.html      Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:44 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html:1.19   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_free.3.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html:1.19 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_header.3.html      Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html:1.19    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_new.3.html Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html:1.19   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_open.3.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html:1.19    Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_options.3.html Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html:1.19 pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html:1.20
--- pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html:1.19   Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/libarchive_changes.3.html        Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>

Index: pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html:1.14 pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html:1.15
--- pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html:1.14   Tue Jan  6 11:55:21 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_entry_misc.3.html        Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>

Index: pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html:1.16 pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html:1.17
--- pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html:1.16  Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html       Thu Mar 26 11:20:05 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:43 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:27 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>
Index: pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html
diff -u pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html:1.16 pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html:1.17
--- pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html:1.16 Tue Jan  6 11:55:22 2026
+++ pkgsrc/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html      Thu Mar 26 11:20:06 2026
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Jan  5 10:42:45 2026 -->
+<!-- CreationDate: Tue Mar 10 09:57:29 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd";>
 <html>

Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_disk.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_util.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_disk.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/bsdcpio.1.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/bsdtar.1.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/cpio.5.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/libarchive-formats.5.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/libarchive.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/libarchive_internals.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/mtree.5.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/tar.5.pdf
Binary files are different

Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_acl.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_linkify.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_paths.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_perms.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_stat.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_time.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_data.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_extract.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_filter.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_format.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_free.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_header.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_new.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_open.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_set_options.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_blocksize.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_data.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_filter.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_finish_entry.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_format.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_free.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_header.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_new.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_open.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_set_options.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/libarchive_changes.3.pdf
Binary files are different

Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_entry_misc.3.pdf
Binary files are different

Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_read_add_passphrase.3.pdf
Binary files are different
Index: pkgsrc/archivers/libarchive/files/doc/pdf/archive_write_set_passphrase.3.pdf
Binary files are different

Index: pkgsrc/archivers/libarchive/files/libarchive/archive.h
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive.h:1.26 pkgsrc/archivers/libarchive/files/libarchive/archive.h:1.27
--- pkgsrc/archivers/libarchive/files/libarchive/archive.h:1.26 Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive.h      Thu Mar 26 11:20:07 2026
@@ -34,7 +34,7 @@
  * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
  */
 /* Note: Compiler will complain if this does not match archive_entry.h! */
-#define        ARCHIVE_VERSION_NUMBER 3008005
+#define        ARCHIVE_VERSION_NUMBER 3008006
 
 #include <sys/stat.h>
 #include <stddef.h>  /* for wchar_t */
@@ -177,7 +177,7 @@ __LA_DECL int               archive_version_number(vo
 /*
  * Textual name/version of the library, useful for version displays.
  */
-#define        ARCHIVE_VERSION_ONLY_STRING "3.8.5"
+#define        ARCHIVE_VERSION_ONLY_STRING "3.8.6"
 #define        ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
 __LA_DECL const char * archive_version_string(void);
 

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c:1.10 pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c:1.11
--- pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c:1.10     Sun Nov  2 08:52:14 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_acl.c  Thu Mar 26 11:20:07 2026
@@ -1256,8 +1256,12 @@ archive_acl_from_text_w(struct archive_a
 
                        tag = 0;
                        s = field[n].start;
-                       st = field[n].start + 1;
                        len = field[n].end - field[n].start;
+                       if (len == 0) {
+                               ret = ARCHIVE_WARN;
+                               continue;
+                       }
+                       st = s + 1;
 
                        switch (*s) {
                        case L'u':
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c:1.10 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c:1.11
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c:1.10 Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_cab.c      Thu Mar 26 11:20:07 2026
@@ -383,8 +383,10 @@ archive_read_support_format_cab(struct a
            NULL,
            NULL);
 
-       if (r != ARCHIVE_OK)
+       if (r != ARCHIVE_OK) {
+               archive_wstring_free(&cab->ws);
                free(cab);
+       }
        return (ARCHIVE_OK);
 }
 
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c:1.10 pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c:1.11
--- pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c:1.10 Wed May 21 15:25:51 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_gnutar.c      Thu Mar 26 11:20:07 2026
@@ -293,6 +293,17 @@ archive_write_gnutar_header(struct archi
        } else
                sconv = gnutar->opt_sconv;
 
+       /* Sanity check. */
+       if (archive_entry_pathname(entry) == NULL
+#if defined(_WIN32) && !defined(__CYGWIN__)
+           && archive_entry_pathname_w(entry) == NULL
+#endif
+           ) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Can't record entry in tar file without pathname");
+               return ARCHIVE_FAILED;
+       }
+
        /* Only regular files (not hardlinks) have data. */
        if (archive_entry_hardlink(entry) != NULL ||
            archive_entry_symlink(entry) != NULL ||
@@ -385,17 +396,30 @@ archive_write_gnutar_header(struct archi
        r = archive_entry_pathname_l(entry, &(gnutar->pathname),
            &(gnutar->pathname_length), sconv);
        if (r != 0) {
+               const char* p_mbs;
                if (errno == ENOMEM) {
                        archive_set_error(&a->archive, ENOMEM,
                            "Can't allocate memory for pathname");
                        ret = ARCHIVE_FATAL;
                        goto exit_write_header;
                }
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Can't translate pathname '%s' to %s",
-                   archive_entry_pathname(entry),
-                   archive_string_conversion_charset_name(sconv));
-               ret2 = ARCHIVE_WARN;
+               p_mbs = archive_entry_pathname(entry);
+               if (p_mbs) {
+                       /* We have a wrongly-encoded MBS pathname.
+                        * Warn and use it.  */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname '%s' to %s", p_mbs,
+                           archive_string_conversion_charset_name(sconv));
+                       ret2 = ARCHIVE_WARN;
+               } else {
+                       /* We have no MBS pathname.  Fail.  */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname to %s",
+                           archive_string_conversion_charset_name(sconv));
+                       return ARCHIVE_FAILED;
+               }
        }
        r = archive_entry_uname_l(entry, &(gnutar->uname),
            &(gnutar->uname_length), sconv);

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h:1.9 pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h:1.10
--- pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h:1.9  Tue Dec 23 14:01:23 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_cryptor_private.h      Thu Mar 26 11:20:07 2026
@@ -109,6 +109,10 @@ typedef struct {
 #include <nettle/version.h>
 #define        ARCHIVE_CRYPTOR_USE_NETTLE 1
 
+#ifndef AES_MAX_KEY_SIZE
+#define AES_MAX_KEY_SIZE AES256_KEY_SIZE
+#endif
+
 typedef struct {
 #if NETTLE_VERSION_MAJOR < 3
        struct aes_ctx  ctx;
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c:1.9 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c:1.10
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c:1.9 Sun Nov  2 08:52:14 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_rar5.c     Thu Mar 26 11:20:07 2026
@@ -375,6 +375,7 @@ static int rar5_read_data_skip(struct ar
 static int push_data_ready(struct archive_read* a, struct rar5* rar,
        const uint8_t* buf, size_t size, int64_t offset);
 static void clear_data_ready_stack(struct rar5* rar);
+static void rar5_deinit(struct rar5* rar);
 
 /* CDE_xxx = Circular Double Ended (Queue) return values. */
 enum CDE_RETURN_VALUES {
@@ -429,8 +430,7 @@ static int cdeque_front(struct cdeque* d
                return CDE_OUT_OF_BOUNDS;
 }
 
-/* Pushes a new element into the end of this circular deque object. If current
- * size will exceed capacity, the oldest element will be overwritten. */
+/* Pushes a new element into the end of this circular deque object. */
 static int cdeque_push_back(struct cdeque* d, void* item) {
        if(d == NULL)
                return CDE_PARAM;
@@ -554,7 +554,11 @@ static struct filter_info* add_new_filte
                return NULL;
        }
 
-       cdeque_push_back(&rar->cstate.filters, cdeque_filter(f));
+       if (CDE_OK != cdeque_push_back(&rar->cstate.filters, cdeque_filter(f))) {
+               free(f);
+               return NULL;
+       }
+
        return f;
 }
 
@@ -3040,7 +3044,9 @@ static int parse_filter(struct archive_r
        if(block_length < 4 ||
            block_length > 0x400000 ||
            filter_type > FILTER_ARM ||
-           !is_valid_filter_block_start(rar, block_start))
+           !is_valid_filter_block_start(rar, block_start) ||
+           (rar->cstate.window_size > 0 &&
+            (ssize_t)block_length > rar->cstate.window_size >> 1))
        {
                archive_set_error(&ar->archive, ARCHIVE_ERRNO_FILE_FORMAT,
                    "Invalid filter encountered");
@@ -4328,7 +4334,7 @@ static int rar5_cleanup(struct archive_r
        free(rar->vol.push_buf);
 
        free_filters(rar);
-       cdeque_free(&rar->cstate.filters);
+       rar5_deinit(rar);
 
        free(rar);
        a->format->data = NULL;
@@ -4353,6 +4359,7 @@ static int rar5_has_encrypted_entries(st
        return ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
 }
 
+/* Must match deallocations in rar5_deinit */
 static int rar5_init(struct rar5* rar) {
        memset(rar, 0, sizeof(struct rar5));
 
@@ -4368,6 +4375,11 @@ static int rar5_init(struct rar5* rar) {
        return ARCHIVE_OK;
 }
 
+/* Must match allocations in rar5_init */
+static void rar5_deinit(struct rar5* rar) {
+       cdeque_free(&rar->cstate.filters);
+}
+
 int archive_read_support_format_rar5(struct archive *_a) {
        struct archive_read* ar;
        int ret;
@@ -4404,8 +4416,9 @@ int archive_read_support_format_rar5(str
            rar5_has_encrypted_entries);
 
        if(ret != ARCHIVE_OK) {
-               (void) rar5_cleanup(ar);
+               rar5_deinit(rar);
+               free(rar);
        }
 
-       return ret;
+       return ARCHIVE_OK;
 }

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h:1.22 pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h:1.23
--- pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h:1.22   Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_entry.h        Thu Mar 26 11:20:07 2026
@@ -28,7 +28,7 @@
 #define        ARCHIVE_ENTRY_H_INCLUDED
 
 /* Note: Compiler will complain if this does not match archive.h! */
-#define        ARCHIVE_VERSION_NUMBER 3008005
+#define        ARCHIVE_VERSION_NUMBER 3008006
 
 /*
  * Note: archive_entry.h is for use outside of libarchive; the

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c:1.4 pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c:1.5
--- pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c:1.4     Sat Oct 19 05:39:58 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_hmac.c Thu Mar 26 11:20:07 2026
@@ -198,6 +198,7 @@ static void __hmac_sha1_cleanup(archive_
 }
 
 #elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_HMAC_H)
+#include <nettle/version.h>
 
 static int
 __hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
@@ -216,7 +217,12 @@ __hmac_sha1_update(archive_hmac_sha1_ctx
 static void
 __hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
 {
+#if NETTLE_VERSION_MAJOR < 4
        hmac_sha1_digest(ctx, (unsigned)*out_len, out);
+#else
+       hmac_sha1_digest(ctx, out);
+       *out_len = SHA1_DIGEST_SIZE;
+#endif
 }
 
 static void

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c:1.13 pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c:1.14
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c:1.13      Sun Nov  2 08:52:14 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_open_filename.c   Thu Mar 26 11:20:07 2026
@@ -122,13 +122,14 @@ archive_read_open_filenames(struct archi
        archive_clear_error(a);
        do
        {
+               size_t len;
                if (filename == NULL)
                        filename = "";
-               mine = calloc(1,
-                       sizeof(*mine) + strlen(filename));
+               len = strlen(filename);
+               mine = calloc(1, sizeof(*mine) + len);
                if (mine == NULL)
                        goto no_memory;
-               strcpy(mine->filename.m, filename);
+               memcpy(mine->filename.m, filename, len + 1);
                mine->block_size = block_size;
                mine->fd = -1;
                mine->buffer = NULL;
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c:1.13 pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c:1.14
--- pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c:1.13    Sun Nov  2 08:52:15 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_zip.c Thu Mar 26 11:20:07 2026
@@ -802,6 +802,17 @@ archive_write_zip_header(struct archive_
        int version_needed = 10;
 #define MIN_VERSION_NEEDED(x) do { if (version_needed < x) { version_needed = x; } } while (0)
 
+       /* Sanity check. */
+       if (archive_entry_pathname(entry) == NULL
+#if defined(_WIN32) && !defined(__CYGWIN__)
+           && archive_entry_pathname_w(entry) == NULL
+#endif
+           ) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Can't record entry in zip file without pathname");
+               return ARCHIVE_FAILED;
+       }
+
        /* Ignore types of entries that we don't support. */
        type = archive_entry_filetype(entry);
        if (type != AE_IFREG && type != AE_IFDIR && type != AE_IFLNK) {
@@ -882,22 +893,33 @@ archive_write_zip_header(struct archive_
                return (ARCHIVE_FATAL);
        }
 
-       if (sconv != NULL) {
+       {
                const char *p;
                size_t len;
 
                if (archive_entry_pathname_l(zip->entry, &p, &len, sconv) != 0) {
+                       const char* p_mbs;
                        if (errno == ENOMEM) {
                                archive_set_error(&a->archive, ENOMEM,
                                    "Can't allocate memory for Pathname");
                                return (ARCHIVE_FATAL);
                        }
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Can't translate Pathname '%s' to %s",
-                           archive_entry_pathname(zip->entry),
-                           archive_string_conversion_charset_name(sconv));
-                       ret2 = ARCHIVE_WARN;
+                       p_mbs = archive_entry_pathname(zip->entry);
+                       if (p_mbs) {
+                               /* We have a wrongly-encoded MBS pathname.  Warn and use it.  */
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Can't translate pathname '%s' to %s", p_mbs,
+                                   archive_string_conversion_charset_name(sconv));
+                               ret2 = ARCHIVE_WARN;
+                       } else {
+                               /* We have no MBS pathname.  Fail.  */
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Can't translate pathname to %s",
+                                   archive_string_conversion_charset_name(sconv));
+                               return ARCHIVE_FAILED;
+                       }
                }
                if (len > 0)
                        archive_entry_set_pathname(zip->entry, p);

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c:1.7 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c:1.8
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c:1.7      Sun Nov  2 08:52:14 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_filter_program.c  Thu Mar 26 11:20:07 2026
@@ -149,6 +149,8 @@ archive_read_support_filter_program_sign
        if (signature != NULL && signature_len > 0) {
                state->signature_len = signature_len;
                state->signature = malloc(signature_len);
+               if (state->signature == NULL)
+                       goto memerr;
                memcpy(state->signature, signature, signature_len);
        }
 
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c:1.7 pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c:1.8
--- pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c:1.7   Sat Oct 19 05:39:59 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_v7tar.c       Thu Mar 26 11:20:07 2026
@@ -232,7 +232,11 @@ archive_write_v7tar_header(struct archiv
                sconv = v7tar->opt_sconv;
 
        /* Sanity check. */
-       if (archive_entry_pathname(entry) == NULL) {
+       if (archive_entry_pathname(entry) == NULL
+#if defined(_WIN32) && !defined(__CYGWIN__)
+           && archive_entry_pathname_w(entry) == NULL
+#endif
+           ) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                    "Can't record entry in tar file without pathname");
                return (ARCHIVE_FAILED);
@@ -382,15 +386,28 @@ format_header_v7tar(struct archive_write
         */
        r = archive_entry_pathname_l(entry, &pp, &copy_length, sconv);
        if (r != 0) {
+               const char* p_mbs;
                if (errno == ENOMEM) {
                        archive_set_error(&a->archive, ENOMEM,
                            "Can't allocate memory for Pathname");
                        return (ARCHIVE_FATAL);
                }
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Can't translate pathname '%s' to %s",
-                   pp, archive_string_conversion_charset_name(sconv));
-               ret = ARCHIVE_WARN;
+               p_mbs = archive_entry_pathname(entry);
+               if (p_mbs) {
+                       /* We have a wrongly-encoded MBS pathname.
+                        * Warn and use it.  */
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname '%s' to %s", p_mbs,
+                           archive_string_conversion_charset_name(sconv));
+                       ret = ARCHIVE_WARN;
+               } else {
+                       /* We have no MBS pathname.  Fail.  */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname to %s",
+                           archive_string_conversion_charset_name(sconv));
+                       return ARCHIVE_FAILED;
+               }
        }
        if (strict && copy_length < V7TAR_name_size)
                memcpy(h + V7TAR_name_offset, pp, copy_length);

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c:1.15 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c:1.16
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c:1.15        Thu Nov 20 06:08:27 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c     Thu Mar 26 11:20:07 2026
@@ -34,6 +34,9 @@
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
 #ifdef HAVE_BZLIB_H
 #include <bzlib.h>
 #endif
@@ -80,7 +83,7 @@
 /*
  * ELF format
  */
-#define ELF_HDR_MIN_LEN 0x3f
+#define ELF_HDR_MIN_LEN 0x40 /* sizeof(Elf64_Ehdr) */
 #define ELF_HDR_EI_CLASS_OFFSET 0x04
 #define ELF_HDR_EI_DATA_OFFSET 0x05
 
@@ -855,13 +858,18 @@ find_elf_data_sec(struct archive_read *a
                while (e_shnum > 0) {
                        name_offset = (*dec32)(h + sec_tbl_offset);
                        if (name_offset == data_sym_offset) {
+                               uint64_t sel_offset;
+
                                if (format_64) {
-                                       min_addr = (*dec64)(
+                                       sel_offset = (*dec64)(
                                            h + sec_tbl_offset + 0x18);
                                } else {
-                                       min_addr = (*dec32)(
+                                       sel_offset = (*dec32)(
                                            h + sec_tbl_offset + 0x10);
                                }
+                               if (sel_offset > SSIZE_MAX)
+                                       break;
+                               min_addr = (ssize_t)sel_offset;
                                break;
                        }
                        sec_tbl_offset += e_shentsize;

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c:1.14 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c:1.15
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c:1.14 Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c      Thu Mar 26 11:20:07 2026
@@ -1101,6 +1101,13 @@ lha_read_file_header_3(struct archive_re
        header_crc = lha_crc16(0, p, H3_FIXED_SIZE);
        __archive_read_consume(a, H3_FIXED_SIZE);
 
+       /* Reject rediculously large header */
+       if (lha->header_size > 65536) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "LHa header size too large");
+               return (ARCHIVE_FATAL);
+       }
+
        /* Read extended headers */
        err = lha_read_file_extended_header(a, lha, &header_crc, 4,
                  lha->header_size - H3_FIXED_SIZE, &extdsize);

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c:1.19 pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c:1.20
--- pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c:1.19       Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c    Thu Mar 26 11:20:07 2026
@@ -300,7 +300,12 @@ cleanup(struct archive_read *a)
        struct mtree_entry *p, *q;
 
        mtree = (struct mtree *)(a->format->data);
-
+       
+       /* Close any dangling file descriptor before freeing */
+    if (mtree->fd >= 0) {
+        close(mtree->fd);
+        mtree->fd = -1;
+    }
        p = mtree->entries;
        while (p != NULL) {
                q = p->next;

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_string.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_string.c:1.18 pkgsrc/archivers/libarchive/files/libarchive/archive_string.c:1.19
--- pkgsrc/archivers/libarchive/files/libarchive/archive_string.c:1.18  Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_string.c       Thu Mar 26 11:20:07 2026
@@ -772,7 +772,7 @@ archive_string_append_from_wcs_in_codepa
                        int r;
 
                        defchar_used = 0;
-                       if (to_cp == CP_UTF8 || sc == NULL)
+                       if (to_cp == CP_UTF8)
                                dp = NULL;
                        else
                                dp = &defchar_used;
@@ -1873,6 +1873,9 @@ archive_string_conversion_free(struct ar
 const char *
 archive_string_conversion_charset_name(struct archive_string_conv *sc)
 {
+       if (sc == NULL) {
+               return "current locale";
+       }
        if (sc->flag & SCONV_TO_CHARSET)
                return (sc->to_charset);
        else
@@ -4123,7 +4126,12 @@ archive_mstring_get_mbs_l(struct archive
         * character-set. */
        if ((aes->aes_set & AES_SET_MBS) == 0) {
                const char *pm; /* unused */
-               archive_mstring_get_mbs(a, aes, &pm); /* ignore errors, we'll handle it later */
+               if (archive_mstring_get_mbs(a, aes, &pm) != 0) {
+                       /* We have another form, but failed to convert it to
+                        * the native locale.  Transitively, we've failed to
+                        * convert it to the specified character set. */
+                       ret = -1;
+               }
        }
        /* If we already have an MBS form, use it to be translated to
         * specified character-set. */
@@ -4141,6 +4149,8 @@ archive_mstring_get_mbs_l(struct archive
                if (length != NULL)
                        *length = aes->aes_mbs_in_locale.length;
        } else {
+               /* Either we have no string in any form,
+                * or conversion failed and set 'ret != 0'.  */
                *p = NULL;
                if (length != NULL)
                        *length = 0;
Index: pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c:1.18 pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c:1.19
--- pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c:1.18        Tue Dec 23 14:01:23 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_write_disk_posix.c     Thu Mar 26 11:20:07 2026
@@ -1975,7 +1975,7 @@ archive_write_disk_gid(struct archive *_
                return (a->lookup_gid)(a->lookup_gid_data, name, id);
        return (id);
 }
- 
+
 int64_t
 archive_write_disk_uid(struct archive *_a, const char *name, la_int64_t id)
 {
@@ -2406,7 +2406,7 @@ create_filesystem_object(struct archive_
         */
        mode = final_mode & 0777 & ~a->user_umask;
 
-       /* 
+       /*
         * Always create writable such that [f]setxattr() works if we're not
         * root.
         */
@@ -3024,7 +3024,7 @@ check_symlinks_fsobj(char *path, int *a_
                                /*
                                 * We are not the last element and we want to
                                 * follow symlinks if they are a directory.
-                                * 
+                                *
                                 * This is needed to extract hardlinks over
                                 * symlinks.
                                 */
@@ -3435,7 +3435,7 @@ create_dir(struct archive_write_disk *a,
                        le = new_fixup(a, path);
                        if (le == NULL)
                                return (ARCHIVE_FATAL);
-                       le->fixup |=TODO_MODE_BASE;
+                       le->fixup |= TODO_MODE_BASE;
                        le->mode = mode_final;
                }
                return (ARCHIVE_OK);
@@ -3447,8 +3447,17 @@ create_dir(struct archive_write_disk *a,
         * don't add it to the fixup list here, as it's already been
         * added.
         */
-       if (la_stat(path, &st) == 0 && S_ISDIR(st.st_mode))
-               return (ARCHIVE_OK);
+       if (errno == EEXIST) {
+               if (la_stat(path, &st) == 0) {
+                       if (S_ISDIR(st.st_mode))
+                               return (ARCHIVE_OK);
+                       /* path exists but is not a directory */
+                       errno = ENOTDIR;
+               } else {
+                       /* restore original errno */
+                       errno = EEXIST;
+               }
+       }
 
        archive_set_error(&a->archive, errno, "Failed to create dir '%s'",
            path);
@@ -4767,4 +4776,3 @@ static void close_file_descriptor(struct
 
 
 #endif /* !_WIN32 || __CYGWIN__ */
-

Index: pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c:1.11 pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c:1.12
--- pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c:1.11  Tue Jan  6 11:55:23 2026
+++ pkgsrc/archivers/libarchive/files/libarchive/archive_write_set_format_ustar.c       Thu Mar 26 11:20:07 2026
@@ -254,11 +254,11 @@ archive_write_ustar_header(struct archiv
                sconv = ustar->opt_sconv;
 
        /* Sanity check. */
+       if (archive_entry_pathname(entry) == NULL
 #if defined(_WIN32) && !defined(__CYGWIN__)
-       if (archive_entry_pathname_w(entry) == NULL) {
-#else
-       if (archive_entry_pathname(entry) == NULL) {
+           && archive_entry_pathname_w(entry) == NULL
 #endif
+           ) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                    "Can't record entry in tar file without pathname");
                return (ARCHIVE_FAILED);
@@ -409,15 +409,28 @@ __archive_write_format_header_ustar(stru
         */
        r = archive_entry_pathname_l(entry, &pp, &copy_length, sconv);
        if (r != 0) {
+               const char* p_mbs;
                if (errno == ENOMEM) {
                        archive_set_error(&a->archive, ENOMEM,
                            "Can't allocate memory for Pathname");
                        return (ARCHIVE_FATAL);
                }
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Can't translate pathname '%s' to %s",
-                   pp, archive_string_conversion_charset_name(sconv));
-               ret = ARCHIVE_WARN;
+               p_mbs = archive_entry_pathname(entry);
+               if (p_mbs) {
+                       /* We have a wrongly-encoded MBS pathname.
+                        * Warn and use it.  */
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname '%s' to %s", p_mbs,
+                           archive_string_conversion_charset_name(sconv));
+                       ret = ARCHIVE_WARN;
+               } else {
+                       /* We have no MBS pathname.  Fail.  */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Can't translate pathname to %s",
+                           archive_string_conversion_charset_name(sconv));
+                       return ARCHIVE_FAILED;
+               }
        }
        if (copy_length <= USTAR_name_size)
                memcpy(h + USTAR_name_offset, pp, copy_length);

Index: pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt:1.18 pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt:1.19
--- pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt:1.18       Thu Nov 20 06:08:27 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/test/CMakeLists.txt    Thu Mar 26 11:20:07 2026
@@ -155,6 +155,7 @@ IF(ENABLE_TEST)
     test_read_format_lha_bugfix_0.c
     test_read_format_lha_filename.c
     test_read_format_lha_filename_utf16.c
+    test_read_format_lha_oversize_header.c
     test_read_format_mtree.c
     test_read_format_mtree_crash747.c
     test_read_format_pax_bz2.c
@@ -167,6 +168,7 @@ IF(ENABLE_TEST)
     test_read_format_rar_filter.c
     test_read_format_rar_overflow.c
     test_read_format_rar5.c
+    test_read_format_rar5_loop_bug.c
     test_read_format_raw.c
     test_read_format_tar.c
     test_read_format_tar_V_negative_size.c
@@ -227,6 +229,7 @@ IF(ENABLE_TEST)
     test_tar_large.c
     test_ustar_filename_encoding.c
     test_ustar_filenames.c
+    test_v7tar_filename_encoding.c
     test_warn_missing_hardlink_target.c
     test_write_disk.c
     test_write_disk_appledouble.c

Index: pkgsrc/archivers/libarchive/files/libarchive/test/list.h
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/list.h:1.21 pkgsrc/archivers/libarchive/files/libarchive/test/list.h:1.22
--- pkgsrc/archivers/libarchive/files/libarchive/test/list.h:1.21       Tue Dec 23 14:01:24 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/test/list.h    Thu Mar 26 11:20:07 2026
@@ -48,6 +48,8 @@ DEFINE_TEST(test_archive_sha384)
 DEFINE_TEST(test_archive_sha512)
 DEFINE_TEST(test_archive_string)
 DEFINE_TEST(test_archive_string_conversion)
+DEFINE_TEST(test_archive_string_conversion_fail_c)
+DEFINE_TEST(test_archive_string_conversion_fail_latin1)
 DEFINE_TEST(test_archive_string_conversion_utf16_utf8)
 DEFINE_TEST(test_archive_string_conversion_utf8_utf16)
 DEFINE_TEST(test_archive_string_sort)
@@ -169,6 +171,7 @@ DEFINE_TEST(test_gnutar_filename_encodin
 DEFINE_TEST(test_gnutar_filename_encoding_Russian_Russia)
 DEFINE_TEST(test_gnutar_filename_encoding_UTF16_win)
 DEFINE_TEST(test_gnutar_filename_encoding_UTF8_CP866)
+DEFINE_TEST(test_gnutar_filename_encoding_fail_UTF16_win)
 DEFINE_TEST(test_gnutar_filename_encoding_ru_RU_CP1251)
 DEFINE_TEST(test_link_resolver)
 DEFINE_TEST(test_link_resolver_unicode_win)
@@ -233,6 +236,7 @@ DEFINE_TEST(test_read_format_7zip_malfor
 DEFINE_TEST(test_read_format_7zip_packinfo_digests)
 DEFINE_TEST(test_read_format_7zip_ppmd)
 DEFINE_TEST(test_read_format_7zip_sfx_elf)
+DEFINE_TEST(test_read_format_7zip_sfx_elf64trunc)
 DEFINE_TEST(test_read_format_7zip_sfx_modified_pe)
 DEFINE_TEST(test_read_format_7zip_sfx_pe)
 DEFINE_TEST(test_read_format_7zip_win_attrib)
@@ -310,6 +314,7 @@ DEFINE_TEST(test_read_format_lha)
 DEFINE_TEST(test_read_format_lha_bugfix_0)
 DEFINE_TEST(test_read_format_lha_filename)
 DEFINE_TEST(test_read_format_lha_filename_UTF16)
+DEFINE_TEST(test_read_format_lha_oversize_header)
 DEFINE_TEST(test_read_format_mtree)
 DEFINE_TEST(test_read_format_mtree_crash747)
 DEFINE_TEST(test_read_format_mtree_filenames_only)
@@ -348,6 +353,7 @@ DEFINE_TEST(test_read_format_rar5_invali
 DEFINE_TEST(test_read_format_rar5_invalidhash_and_validhtime_exfld)
 DEFINE_TEST(test_read_format_rar5_leftshift1)
 DEFINE_TEST(test_read_format_rar5_leftshift2)
+DEFINE_TEST(test_read_format_rar5_loop_bug)
 DEFINE_TEST(test_read_format_rar5_multiarchive_skip_all)
 DEFINE_TEST(test_read_format_rar5_multiarchive_skip_all_but_first)
 DEFINE_TEST(test_read_format_rar5_multiarchive_skip_all_but_second)
@@ -540,6 +546,7 @@ DEFINE_TEST(test_ustar_filename_encoding
 DEFINE_TEST(test_ustar_filename_encoding_Russian_Russia)
 DEFINE_TEST(test_ustar_filename_encoding_UTF16_win)
 DEFINE_TEST(test_ustar_filename_encoding_UTF8_CP866)
+DEFINE_TEST(test_ustar_filename_encoding_fail_UTF16_win)
 DEFINE_TEST(test_ustar_filename_encoding_ru_RU_CP1251)
 DEFINE_TEST(test_ustar_filenames)
 DEFINE_TEST(test_warn_missing_hardlink_target)
@@ -686,4 +693,5 @@ DEFINE_TEST(test_zip_filename_encoding_K
 DEFINE_TEST(test_zip_filename_encoding_Russian_Russia)
 DEFINE_TEST(test_zip_filename_encoding_UTF16_win)
 DEFINE_TEST(test_zip_filename_encoding_UTF8)
+DEFINE_TEST(test_zip_filename_encoding_fail_UTF16_win)
 DEFINE_TEST(test_zip_filename_encoding_ru_RU_CP1251)

Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c:1.7 pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c:1.8
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c:1.7      Sun Nov  2 08:52:15 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_archive_string_conversion.c  Thu Mar 26 11:20:07 2026
@@ -883,6 +883,141 @@ DEFINE_TEST(test_archive_string_conversi
        test_archive_string_set_get();
 }
 
+static void
+test_archive_string_conversion_fail_charset(void)
+{
+       /* Conversion error message construction may use the charset name.  */
+       assertEqualString("current locale",
+           archive_string_conversion_charset_name(NULL));
+}
+
+static void
+test_archive_string_conversion_fail_utf16_mbs(struct archive *a,
+    struct archive_string_conv *sconv)
+{
+       static const wchar_t wcs_string[] = L"\U0000043f\U00000440\U00000438";
+       int r;
+       const char* p;
+       size_t len;
+
+       /* WCS to MBS should fail.  */
+       {
+               struct archive_string str;
+               archive_string_init(&str);
+               r = archive_string_append_from_wcs(
+                   &str, wcs_string, sizeof(wcs_string) / sizeof(*wcs_string) - 1);
+               assertEqualInt(-1, r);
+               archive_string_free(&str);
+       }
+       {
+               struct archive_mstring mstr;
+               memset(&mstr, 0, sizeof(mstr));
+               assertEqualInt(ARCHIVE_OK,
+                   archive_mstring_copy_wcs(&mstr, wcs_string));
+               r = archive_mstring_get_mbs_l(a, &mstr, &p, &len, NULL);
+               assertEqualInt(-1, r);
+               assertEqualInt(0, mstr.aes_set & AES_SET_MBS);
+               archive_mstring_clean(&mstr);
+       }
+       if (sconv) {
+               struct archive_mstring mstr;
+               memset(&mstr, 0, sizeof(mstr));
+               assertEqualInt(ARCHIVE_OK,
+                   archive_mstring_copy_wcs(&mstr, wcs_string));
+               r = archive_mstring_get_mbs_l(a, &mstr, &p, &len, sconv);
+               assertEqualInt(-1, r);
+               assertEqualInt(0, mstr.aes_set & AES_SET_MBS);
+               archive_mstring_clean(&mstr);
+       }
+}
+
+static void
+test_archive_string_conversion_fail_utf8_mbs(struct archive *a,
+    struct archive_string_conv *sconv)
+{
+       static const char utf8_string[] = "\xD0\xBF\xD1\x80\xD0\xB8";
+       int r;
+       const char* p;
+       size_t len;
+
+       /* UTF-8 to MBS should fail.  */
+       {
+               struct archive_mstring mstr;
+               memset(&mstr, 0, sizeof(mstr));
+               assertEqualInt(6,
+                   archive_mstring_copy_utf8(&mstr, utf8_string));
+               r = archive_mstring_get_mbs_l(a, &mstr, &p, &len, NULL);
+               assertEqualInt(-1, r);
+               assertEqualInt(0, mstr.aes_set & AES_SET_MBS);
+               archive_mstring_clean(&mstr);
+       }
+       if (sconv) {
+               struct archive_mstring mstr;
+               memset(&mstr, 0, sizeof(mstr));
+               assertEqualInt(6,
+                   archive_mstring_copy_utf8(&mstr, utf8_string));
+               r = archive_mstring_get_mbs_l(a, &mstr, &p, &len, sconv);
+               assertEqualInt(-1, r);
+               assertEqualInt(0, mstr.aes_set & AES_SET_MBS);
+               archive_mstring_clean(&mstr);
+       }
+}
+
+DEFINE_TEST(test_archive_string_conversion_fail_c)
+{
+       struct archive *a;
+
+       /* Test the C locale by not calling setlocale.  */
+
+       test_archive_string_conversion_fail_charset();
+
+       assert((a = archive_write_new()) != NULL);
+
+       test_archive_string_conversion_fail_utf16_mbs(a, NULL);
+       test_archive_string_conversion_fail_utf8_mbs(a, NULL);
+
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}
+
+DEFINE_TEST(test_archive_string_conversion_fail_latin1)
+{
+       struct archive *a;
+       struct archive_string_conv *sconv;
+
+       /* Test a Latin-1 locale.  */
+       if (
+#if defined(_WIN32) && !defined(__CYGWIN__)
+           /* Windows allows ".<code-page>" to change encoding.  */
+           setlocale(LC_ALL, ".1252") == NULL
+#else
+           setlocale(LC_ALL, "en_US.ISO8859-1") == NULL
+#endif
+          ) {
+               skipping("No Latin-1 locale found on this system.");
+               return;
+       }
+
+       test_archive_string_conversion_fail_charset();
+
+       assert((a = archive_write_new()) != NULL);
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       assertA(NULL != (sconv =
+           archive_string_conversion_to_charset(a, "CP1252", 0)));
+       assertEqualString("CP1252",
+           archive_string_conversion_charset_name(sconv));
+#else
+       assertA(NULL != (sconv =
+           archive_string_conversion_to_charset(a, "ISO8859-1", 0)));
+       assertEqualString("ISO8859-1",
+           archive_string_conversion_charset_name(sconv));
+#endif
+       test_archive_string_conversion_fail_utf16_mbs(a, sconv);
+       test_archive_string_conversion_fail_utf8_mbs(a, sconv);
+
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}
+
 DEFINE_TEST(test_archive_string_conversion_utf16_utf8)
 {
 #if !defined(_WIN32) || defined(__CYGWIN__)

Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c:1.4 pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c:1.5
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c:1.4       Sun Sep 15 07:02:21 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_gnutar_filename_encoding.c   Thu Mar 26 11:20:07 2026
@@ -491,3 +491,43 @@ DEFINE_TEST(test_gnutar_filename_encodin
        assertEqualMem(buff + 157, "\xE8\xA1\xA8.txt", 7);
 #endif
 }
+
+DEFINE_TEST(test_gnutar_filename_encoding_fail_UTF16_win)
+{
+#if !defined(_WIN32) || defined(__CYGWIN__)
+       skipping("This test is meant to verify unicode string handling"
+               " on Windows with UTF-16 names");
+       return;
+#else
+       struct archive *a;
+       struct archive_entry *entry;
+       char buff[4096];
+       size_t used;
+
+       /* Test the C locale by not calling setlocale.  */
+
+       a = archive_write_new();
+       assertEqualInt(ARCHIVE_OK, archive_write_set_format_gnutar(a));
+       if (archive_write_set_options(a, "hdrcharset=CP437") != ARCHIVE_OK) {
+               skipping("This system cannot convert character-set"
+                   " from UTF-16 to CP437.");
+               archive_write_free(a);
+               return;
+       }
+       assertEqualInt(ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       entry = archive_entry_new2(a);
+       /* Set the filename using a UTF-16 string */
+       archive_entry_copy_pathname_w(entry, L"\u8868.txt");
+       archive_entry_set_filetype(entry, AE_IFREG);
+       archive_entry_set_size(entry, 0);
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, entry));
+       /* The pathname cannot even be represented in the current locale
+          for inclusion in the error message.  */
+       assertEqualString("Can't translate pathname to CP437",
+           archive_error_string(a));
+       archive_entry_free(entry);
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+#endif
+}
Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c:1.4 pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c:1.5
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c:1.4        Sun Sep 15 07:02:22 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_ustar_filename_encoding.c    Thu Mar 26 11:20:07 2026
@@ -492,3 +492,43 @@ DEFINE_TEST(test_ustar_filename_encoding
        assertEqualMem(buff + 157, "\xE8\xA1\xA8.txt", 7);
 #endif
 }
+
+DEFINE_TEST(test_ustar_filename_encoding_fail_UTF16_win)
+{
+#if !defined(_WIN32) || defined(__CYGWIN__)
+       skipping("This test is meant to verify unicode string handling"
+               " on Windows with UTF-16 names");
+       return;
+#else
+       struct archive *a;
+       struct archive_entry *entry;
+       char buff[4096];
+       size_t used;
+
+       /* Test the C locale by not calling setlocale.  */
+
+       a = archive_write_new();
+       assertEqualInt(ARCHIVE_OK, archive_write_set_format_ustar(a));
+       if (archive_write_set_options(a, "hdrcharset=CP437") != ARCHIVE_OK) {
+               skipping("This system cannot convert character-set"
+                   " from UTF-16 to CP437.");
+               archive_write_free(a);
+               return;
+       }
+       assertEqualInt(ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       entry = archive_entry_new2(a);
+       /* Set the filename using a UTF-16 string */
+       archive_entry_copy_pathname_w(entry, L"\u8868.txt");
+       archive_entry_set_filetype(entry, AE_IFREG);
+       archive_entry_set_size(entry, 0);
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, entry));
+       /* The pathname cannot even be represented in the current locale
+          for inclusion in the error message.  */
+       assertEqualString("Can't translate pathname to CP437",
+           archive_error_string(a));
+       archive_entry_free(entry);
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+#endif
+}
Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c:1.4 pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c:1.5
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c:1.4  Sun Sep 15 07:02:22 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_zip_filename_encoding.c      Thu Mar 26 11:20:07 2026
@@ -622,3 +622,43 @@ DEFINE_TEST(test_zip_filename_encoding_U
        /* NOTE: ZIP does not support hardlinks */
 #endif
 }
+
+DEFINE_TEST(test_zip_filename_encoding_fail_UTF16_win)
+{
+#if !defined(_WIN32) || defined(__CYGWIN__)
+       skipping("This test is meant to verify unicode string handling"
+               " on Windows with UTF-16 names");
+       return;
+#else
+       struct archive *a;
+       struct archive_entry *entry;
+       char buff[4096];
+       size_t used;
+
+       /* Test the C locale by not calling setlocale.  */
+
+       a = archive_write_new();
+       assertEqualInt(ARCHIVE_OK, archive_write_set_format_zip(a));
+       if (archive_write_set_options(a, "hdrcharset=CP437") != ARCHIVE_OK) {
+               skipping("This system cannot convert character-set"
+                   " from UTF-16 to CP437.");
+               archive_write_free(a);
+               return;
+       }
+       assertEqualInt(ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       entry = archive_entry_new2(a);
+       /* Set the filename using a UTF-16 string */
+       archive_entry_copy_pathname_w(entry, L"\u8868.txt");
+       archive_entry_set_filetype(entry, AE_IFREG);
+       archive_entry_set_size(entry, 0);
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, entry));
+       /* The pathname cannot even be represented in the current locale
+          for inclusion in the error message.  */
+       assertEqualString("Can't translate pathname to CP437",
+           archive_error_string(a));
+       archive_entry_free(entry);
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+#endif
+}

Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c:1.10 pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c:1.11
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c:1.10      Sun Nov  2 08:52:15 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_read_format_7zip.c   Thu Mar 26 11:20:07 2026
@@ -1383,6 +1383,32 @@ DEFINE_TEST(test_read_format_7zip_sfx_el
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
+/*
+ * A truncated ELF 64-bit MSB file.
+ */
+DEFINE_TEST(test_read_format_7zip_sfx_elf64trunc)
+{
+       const char *reffile = "test_read_format_7zip_sfx_elf64trunc.elf";
+       struct archive_entry *ae;
+       struct archive *a;
+
+       assert((a = archive_read_new()) != NULL);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+       extract_reference_file(reffile);
+       assertEqualIntA(a, ARCHIVE_FATAL,
+           archive_read_open_filename(a, reffile, 10240));
+
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       assertEqualInt(0, archive_file_count(a));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
 DEFINE_TEST(test_read_format_7zip_extract_second)
 {
        struct archive *a;
Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c:1.10 pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c:1.11
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c:1.10      Tue Dec 23 14:01:24 2025
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c   Thu Mar 26 11:20:07 2026
@@ -26,6 +26,13 @@
 
 #if !defined(_WIN32) || defined(__CYGWIN__)
 
+#ifdef HAVE_GETEUID
+#define getuid() geteuid()
+#endif
+#ifdef HAVE_GETEGID
+#define getgid() getegid()
+#endif
+
 #define UMASK 022
 
 static long _default_gid = -1;
@@ -142,7 +149,7 @@ DEFINE_TEST(test_write_disk_perms)
         * and we're on a system where group ownership is inherited.
         * (Because we're not allowed to SGID files with defaultgid().)
         */
-       assertEqualInt(0, chown(".", getuid(), getgid()));
+       assertChown(".", getuid(), getgid());
 
        /* Create an archive_write_disk object. */
        assert((a = archive_write_disk_new()) != NULL);
@@ -208,7 +215,7 @@ DEFINE_TEST(test_write_disk_perms)
        if (getuid() == 0) {
                original_uid = getuid() + 1;
                try_to_change_uid = getuid();
-               assertEqualInt(0, chown("dir_owner", original_uid, getgid()));
+               assertChown("dir_owner", original_uid, getgid());
        } else {
                original_uid = getuid();
                try_to_change_uid = getuid() + 1;

Index: pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c
diff -u pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c:1.6 pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c:1.7
--- pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c:1.6     Fri Apr 12 15:39:56 2024
+++ pkgsrc/archivers/libarchive/files/libarchive/test/test_write_disk.c Thu Mar 26 11:20:07 2026
@@ -233,6 +233,22 @@ static void create_reg_file_win(struct a
        assertEqualInt(st.st_size, sizeof(data));
        free(fname);
 }
+#else
+static void create_fail(struct archive_entry *ae, int experr,
+    const char *msg)
+{
+       struct archive *ad;
+       struct stat st;
+
+       /* Write the entry to disk. */
+       assert((ad = archive_write_disk_new()) != NULL);
+       failure("%s", msg);
+       assertEqualIntA(ad, ARCHIVE_FAILED, archive_write_header(ad, ae));
+       assertEqualIntA(ad, experr, archive_errno(ad));
+       assertEqualInt(0, archive_write_free(ad));
+       assertEqualInt(-1, stat(archive_entry_pathname(ae), &st));
+       assertEqualInt(ENOENT, errno);
+}
 #endif /* _WIN32 && !__CYGWIN__ */
 
 DEFINE_TEST(test_write_disk)
@@ -344,5 +360,18 @@ DEFINE_TEST(test_write_disk)
            " with unusable characters in its file name");
        archive_entry_free(ae);
        free(fullpath);
+#else /* !_WIN32 || __CYGWIN__ */
+       /* A directory with a /../ in the middle */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "a/b/../b/file");
+       archive_entry_set_mode(ae, S_IFREG | 0644);
+       /* First attempt should fail with EACCES */
+       assertEqualInt(0, mkdir("a", 0111));
+       create_fail(ae, EACCES,
+           "Test failing to create parent directory with /../");
+       /* Now let it succeed */
+       assertEqualInt(0, chmod("a", 0755));
+       create(ae, "Test creating parent directory with /../");
+       archive_entry_free(ae);
 #endif /* _WIN32 && !__CYGWIN__ */
 }

Index: pkgsrc/archivers/libarchive/files/test_utils/test_common.h
diff -u pkgsrc/archivers/libarchive/files/test_utils/test_common.h:1.13 pkgsrc/archivers/libarchive/files/test_utils/test_common.h:1.14
--- pkgsrc/archivers/libarchive/files/test_utils/test_common.h:1.13     Sun Nov  2 08:52:16 2025
+++ pkgsrc/archivers/libarchive/files/test_utils/test_common.h  Thu Mar 26 11:20:07 2026
@@ -163,6 +163,9 @@
 /* change file/directory permissions and errors if it fails */
 #define assertChmod(pathname, mode)                            \
   assertion_chmod(__FILE__, __LINE__, pathname, mode)
+/* change file/directory ownership and errors if it fails */
+#define assertChown(pathname, user, group)                     \
+  assertion_chown(__FILE__, __LINE__, pathname, user, group)
 /* Assert two files have the same file flags */
 #define assertEqualFflags(patha, pathb)        \
   assertion_compare_fflags(__FILE__, __LINE__, patha, pathb, 0)
@@ -279,6 +282,7 @@ void failure(const char *fmt, ...) __LA_
 int assertion_assert(const char *, int, int, const char *, void *);
 int assertion_chdir(const char *, int, const char *);
 int assertion_chmod(const char *, int, const char *, int);
+int assertion_chown(const char *, int, const char *, int, int);
 int assertion_compare_fflags(const char *, int, const char *, const char *,
     int);
 int assertion_empty_file(const char *, int, const char *);

Index: pkgsrc/archivers/libarchive/files/test_utils/test_main.c
diff -u pkgsrc/archivers/libarchive/files/test_utils/test_main.c:1.14 pkgsrc/archivers/libarchive/files/test_utils/test_main.c:1.15
--- pkgsrc/archivers/libarchive/files/test_utils/test_main.c:1.14       Tue Jan  6 11:55:24 2026
+++ pkgsrc/archivers/libarchive/files/test_utils/test_main.c    Thu Mar 26 11:20:07 2026
@@ -96,6 +96,12 @@ extern char **environ;
 #  define USE_POSIX_SPAWN 1
 # endif
 #endif
+#if !defined(_WIN32)
+# if HAVE_PWD_H && HAVE_GETEUID && HAVE_GETEGID
+#  include <pwd.h>
+#  define RUN_TEST_UNPRIV 1
+# endif
+#endif
 
 #ifndef nitems
 #define nitems(arr) (sizeof(arr) / sizeof((arr)[0]))
@@ -179,6 +185,14 @@ const char *testprogfile;
 const char *testprog;
 #endif
 
+#ifdef RUN_TEST_UNPRIV
+/* Unprivileged user to run as */
+const char *tuser = "nobody";
+/* Original and test credentials */
+uid_t ouid, tuid;
+uid_t ogid, tgid;
+#endif
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
 static void    *GetFunctionKernel32(const char *);
 static int      my_CreateSymbolicLinkA(const char *, const char *, int);
@@ -632,6 +646,22 @@ assertion_chmod(const char *file, int li
 
 }
 
+/* change file/directory ownership and errors if it fails */
+int
+assertion_chown(const char *file, int line, const char *pathname, int user,
+    int group)
+{
+       assertion_count(file, line);
+#ifdef HAVE_CHOWN
+       if (chown(pathname, (uid_t)user, (gid_t)group) == 0)
+               return (1);
+#endif
+       failure_start(file, line, "chown(\"%s\", %d, %d)", pathname,
+           user, group);
+       failure_finish(NULL);
+       return (0);
+}
+
 /* Verify two integers are equal. */
 int
 assertion_equal_int(const char *file, int line,
@@ -3610,8 +3640,11 @@ test_run(int i, const char *tmpdir)
                exit(1);
        }
        testworkdir = workdir;
-       if (!assertMakeDir(testworkdir, 0755)
-           || !assertChdir(testworkdir)) {
+       if (!assertMakeDir(testworkdir, 0755) ||
+#ifdef RUN_TEST_UNPRIV
+           (tuser != NULL && !assertChown(testworkdir, tuid, tgid)) ||
+#endif
+           !assertChdir(testworkdir)) {
                fprintf(stderr,
                    "ERROR: Can't chdir to work dir %s\n", testworkdir);
                exit(1);
@@ -3620,10 +3653,28 @@ test_run(int i, const char *tmpdir)
        set_c_locale();
        /* Record the umask before we run the test. */
        umask(oldumask = umask(0));
+#ifdef RUN_TEST_UNPRIV
+       /*
+        * Temporarily drop privileges.
+        */
+       if (tuser != NULL) {
+               (void)setegid(tuid);
+               (void)seteuid(tuid);
+       }
+#endif
        /*
         * Run the actual test.
         */
        (*tests[i].func)();
+#ifdef RUN_TEST_UNPRIV
+       /*
+        * Restore original credentials.
+        */
+       if (tuser != NULL) {
+               (void)seteuid(ouid);
+               (void)setegid(ogid);
+       }
+#endif
        /*
         * Clean up and report afterwards.
         */
@@ -3949,6 +4000,9 @@ main(int argc, char **argv)
 #endif
        char *pwd, *testprogdir, *tmp2 = NULL, *vlevel = NULL;
        char tmpdir_timestamp[32];
+#ifdef RUN_TEST_UNPRIV
+       struct passwd *pw;
+#endif
 
        (void)argc; /* UNUSED */
 
@@ -4110,6 +4164,11 @@ main(int argc, char **argv)
                        case 's':
                                fail_if_tests_skipped = 1;
                                break;
+#ifdef RUN_TEST_UNPRIV
+                       case 'U':
+                               tuser = optarg;
+                               break;
+#endif
                        case 'u':
                                until_failure++;
                                break;
@@ -4194,6 +4253,28 @@ main(int argc, char **argv)
        }
 #endif
 
+#ifdef RUN_TEST_UNPRIV
+       /*
+        * Check if we are root, and get user to run as.
+        */
+       ouid = getuid();
+       ogid = getgid();
+       if (ouid == 0) {
+               if ((pw = getpwnam(tuser)) == NULL) {
+                       fprintf(stderr, "ERROR: Unknown user %s\n", tuser);
+                       exit(1);
+               }
+               tuid = pw->pw_uid;
+               tgid = pw->pw_gid;
+               printf("Will switch to user %s (uid %d gid %d)\n", tuser,
+                   tuid, tgid);
+       } else {
+               tuser = NULL;
+               tuid = ouid;
+               tgid = ogid;
+       }
+#endif
+
        /*
         * Create a temp directory for the following tests.
         * Include the time the tests started as part of the name,

Index: pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c
diff -u pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c:1.10 pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c:1.11
--- pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c:1.10     Tue Jan  6 11:55:24 2026
+++ pkgsrc/archivers/libarchive/files/unzip/bsdunzip.c  Thu Mar 26 11:20:08 2026
@@ -884,9 +884,9 @@ list(struct archive *a, struct archive_e
        mtime = archive_entry_mtime(e);
        tm = localtime(&mtime);
        if (*y_str)
-               strftime(buf, sizeof(buf), "%m-%d-%G %R", tm);
+               strftime(buf, sizeof(buf), "%m-%d-%Y %R", tm);
        else
-               strftime(buf, sizeof(buf), "%m-%d-%g %R", tm);
+               strftime(buf, sizeof(buf), "%m-%d-%y %R", tm);
 
        pathname = archive_entry_pathname(e);
        if (!pathname)



Home | Main Index | Thread Index | Old Index