head 1.9; access; symbols libarchive-3-8-10:1.1.1.7 pkgsrc-2026Q3:1.8.0.20 pkgsrc-2026Q3-base:1.8 libarchive-3-8-9:1.1.1.6 libarchive-3-8-8:1.1.1.6 pkgsrc-2026Q2:1.8.0.18 pkgsrc-2026Q2-base:1.8 libarchive-3-8-7:1.1.1.6 libarchive-3-8-6:1.1.1.6 pkgsrc-2026Q1:1.8.0.16 pkgsrc-2026Q1-base:1.8 libarchive-3-8-5:1.1.1.6 libarchive-3-8-4:1.1.1.6 pkgsrc-2025Q4:1.8.0.14 pkgsrc-2025Q4-base:1.8 libarchive-3-8-3:1.1.1.6 libarchive-3-8-2:1.1.1.6 pkgsrc-2025Q3:1.8.0.12 pkgsrc-2025Q3-base:1.8 libarchive-3-8-1:1.1.1.6 pkgsrc-2025Q2:1.8.0.10 pkgsrc-2025Q2-base:1.8 libarchive-3-8-0:1.1.1.6 libarchive-3-7-9:1.1.1.6 pkgsrc-2025Q1:1.8.0.8 pkgsrc-2025Q1-base:1.8 pkgsrc-2024Q4:1.8.0.6 pkgsrc-2024Q4-base:1.8 libarchive-3-7-7:1.1.1.6 pkgsrc-2024Q3:1.8.0.4 pkgsrc-2024Q3-base:1.8 libarchive-3-7-5:1.1.1.6 pkgsrc-2024Q2:1.8.0.2 pkgsrc-2024Q2-base:1.8 libarchive-3-7-4:1.1.1.6 libarchive-3-7-3:1.1.1.5 pkgsrc-2024Q1:1.7.0.2 pkgsrc-2024Q1-base:1.7 libarchive-3-7-2:1.1.1.5 pkgsrc-2023Q4:1.6.0.30 pkgsrc-2023Q4-base:1.6 pkgsrc-2023Q3:1.6.0.28 pkgsrc-2023Q3-base:1.6 pkgsrc-2023Q2:1.6.0.26 pkgsrc-2023Q2-base:1.6 pkgsrc-2023Q1:1.6.0.24 pkgsrc-2023Q1-base:1.6 pkgsrc-2022Q4:1.6.0.22 pkgsrc-2022Q4-base:1.6 pkgsrc-2022Q3:1.6.0.20 pkgsrc-2022Q3-base:1.6 pkgsrc-2022Q2:1.6.0.18 pkgsrc-2022Q2-base:1.6 pkgsrc-2022Q1:1.6.0.16 pkgsrc-2022Q1-base:1.6 pkgsrc-2021Q4:1.6.0.14 pkgsrc-2021Q4-base:1.6 pkgsrc-2021Q3:1.6.0.12 pkgsrc-2021Q3-base:1.6 pkgsrc-2021Q2:1.6.0.10 pkgsrc-2021Q2-base:1.6 pkgsrc-2021Q1:1.6.0.8 pkgsrc-2021Q1-base:1.6 pkgsrc-2020Q4:1.6.0.6 pkgsrc-2020Q4-base:1.6 pkgsrc-2020Q3:1.6.0.4 pkgsrc-2020Q3-base:1.6 pkgsrc-2020Q2:1.6.0.2 pkgsrc-2020Q2-base:1.6 pkgsrc-2020Q1:1.5.0.4 pkgsrc-2020Q1-base:1.5 pkgsrc-2019Q4:1.5.0.6 pkgsrc-2019Q4-base:1.5 pkgsrc-2019Q3:1.5.0.2 pkgsrc-2019Q3-base:1.5 libarchive-3-4-0:1.1.1.4 libarchive-3-3-3:1.1.1.3 pkgsrc-2019Q2:1.4.0.18 pkgsrc-2019Q2-base:1.4 pkgsrc-2019Q1:1.4.0.16 pkgsrc-2019Q1-base:1.4 pkgsrc-2018Q4:1.4.0.14 pkgsrc-2018Q4-base:1.4 pkgsrc-2018Q3:1.4.0.12 pkgsrc-2018Q3-base:1.4 pkgsrc-2018Q2:1.4.0.10 pkgsrc-2018Q2-base:1.4 pkgsrc-2018Q1:1.4.0.8 pkgsrc-2018Q1-base:1.4 pkgsrc-2017Q4:1.4.0.6 pkgsrc-2017Q4-base:1.4 pkgsrc-2017Q3:1.4.0.4 pkgsrc-2017Q3-base:1.4 libarchive-3-3-2:1.1.1.3 pkgsrc-2017Q2:1.3.0.4 pkgsrc-2017Q2-base:1.3 pkgsrc-2017Q1:1.3.0.2 pkgsrc-2017Q1-base:1.3 libarchive-3-3-1:1.1.1.2 pkgsrc-2016Q4:1.2.0.6 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.4 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.2 pkgsrc-2016Q2-base:1.2 libarchive-3-2-1:1.1.1.1 KIENTZLE:1.1.1 pkgsrc-2016Q1:1.1.0.10 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.8 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.6 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.4 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.2 pkgsrc-2015Q1-base:1.1; locks; strict; comment @# @; 1.9 date 2026.10.19.12.05.17; author adam; state Exp; branches; next 1.8; commitid R3KJfVxz3NuPb50H; 1.8 date 2024.04.30.06.05.19; author adam; state Exp; branches; next 1.7; commitid id0E8i4RwCC4c88F; 1.7 date 2024.01.18.18.00.16; author adam; state Exp; branches; next 1.6; commitid hNXpsHx3SuHqsXUE; 1.6 date 2020.05.26.09.16.41; author nia; state Exp; branches; next 1.5; commitid nNhsdZACz3PjmJ9C; 1.5 date 2019.09.22.09.55.08; author joerg; state Exp; branches; next 1.4; commitid FdPvRjF4OzwBwZDB; 1.4 date 2017.08.01.22.26.23; author joerg; state Exp; branches; next 1.3; commitid 32clTfkmVE8bPy1A; 1.3 date 2017.02.25.21.11.19; author joerg; state Exp; branches; next 1.2; commitid rW8QfCWrsCO1snHz; 1.2 date 2016.06.20.17.24.57; author joerg; state Exp; branches; next 1.1; commitid ArUvympBjfBseebz; 1.1 date 2015.01.17.12.44.49; author adam; state Exp; branches 1.1.1.1; next ; commitid yy7e1hLrfmA2pn6y; 1.1.1.1 date 2016.06.20.17.12.03; author joerg; state Exp; branches; next 1.1.1.2; commitid rRgm3BqbmbI8aebz; 1.1.1.2 date 2017.02.25.20.54.21; author joerg; state Exp; branches; next 1.1.1.3; commitid ReqPI0ibLYjdmnHz; 1.1.1.3 date 2017.08.01.22.21.12; author joerg; state Exp; branches; next 1.1.1.4; commitid XQwPAFJku336Ny1A; 1.1.1.4 date 2019.09.22.09.51.33; author joerg; state Exp; branches; next 1.1.1.5; commitid 5kDbfPbiV3INvZDB; 1.1.1.5 date 2024.01.18.17.37.45; author adam; state Exp; branches; next 1.1.1.6; commitid zDULEPUODGjTkXUE; 1.1.1.6 date 2024.04.30.05.50.49; author adam; state Exp; branches; next 1.1.1.7; commitid e4DnFoZdQV9Z688F; 1.1.1.7 date 2026.10.19.11.50.39; author adam; state Exp; branches; next ; commitid eS0MvMrTxXQX650H; desc @@ 1.9 log @libarchive: updated to 3.8.10 3.8.10 New features: 7z: add Delta, RISCV, ARMTHUMB and IA64 filters for non-lzma archives libarchive: support digest with nettle 4 and mbedtls 3 tar: add --mode option Security and Bug Fixes see ChangeLog @ text @ARCHIVE_ENTRY_ACL(3) manual page == NAME == '''archive_entry_acl_add_entry''', '''archive_entry_acl_add_entry_w''', '''archive_entry_acl_clear''', '''archive_entry_acl_count''', '''archive_entry_acl_from_text''', '''archive_entry_acl_from_text_w''', '''archive_entry_acl_next''', '''archive_entry_acl_reset''', '''archive_entry_acl_to_text''', '''archive_entry_acl_to_text_w''', '''archive_entry_acl_types''' - functions for manipulating Access Control Lists in archive entry descriptions == LIBRARY == Streaming Archive Library (libarchive, -larchive) == SYNOPSIS == '''#include '''
''void''
'''archive_entry_acl_add_entry'''(''struct archive_entry *a'', ''int type'', ''int permset'', ''int tag'', ''int qualifier'', ''const char *name'');
''void''
'''archive_entry_acl_add_entry_w'''(''struct archive_entry *a'', ''int type'', ''int permset'', ''int tag'', ''int qualifier'', ''const wchar_t *name'');
''void''
'''archive_entry_acl_clear'''(''struct archive_entry *a'');
''int''
'''archive_entry_acl_count'''(''struct archive_entry *a'', ''int type'');
''int''
'''archive_entry_acl_from_text'''(''struct archive_entry *a'', ''const char *text'', ''int type'');
''int''
'''archive_entry_acl_from_text_w'''(''struct archive_entry *a'', ''const wchar_t *text'', ''int type'');
''int''
'''archive_entry_acl_next'''(''struct archive_entry *a'', ''int type'', ''int *ret_type'', ''int *ret_permset'', ''int *ret_tag'', ''int *ret_qual'', ''const char **ret_name'');
''int''
'''archive_entry_acl_reset'''(''struct archive_entry *a'', ''int type'');
''char *''
'''archive_entry_acl_to_text'''(''struct archive_entry *a'', ''ssize_t *len_p'', ''int flags'');
''wchar_t *''
'''archive_entry_acl_to_text_w'''(''struct archive_entry *a'', ''ssize_t *len_p'', ''int flags'');
''int''
'''archive_entry_acl_types'''(''struct archive_entry *a''); == DESCRIPTION == The "Access Control Lists (ACLs)" extend the standard Unix permission model. The ACL interface of '''libarchive''' supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by various levels of ACL support in operating systems, file systems and archive formats. === POSIX.1e Access Control Lists=== A POSIX.1e ACL consists of a number of independent entries. Each entry specifies the permission set as a bitmask of basic permissions. Valid permissions in the are:
ARCHIVE_ENTRY_ACL_READ (.B r )
ARCHIVE_ENTRY_ACL_WRITE (.B w )
ARCHIVE_ENTRY_ACL_EXECUTE (.B x )
The permissions correspond to the normal Unix permissions. The specifies the principal to which the permission applies. Valid values are:
ARCHIVE_ENTRY_ACL_USER The user specified by the name field.
ARCHIVE_ENTRY_ACL_USER_OBJ The owner of the file.
ARCHIVE_ENTRY_ACL_GROUP The group specified by the name field.
ARCHIVE_ENTRY_ACL_GROUP_OBJ The group which owns the file.
ARCHIVE_ENTRY_ACL_MASK The maximum permissions to be obtained via group permissions.
ARCHIVE_ENTRY_ACL_OTHER Any principal who is not the file owner or a member of the owning group.
The principals ARCHIVE_ENTRY_ACL_USER_OBJ, ARCHIVE_ENTRY_ACL_GROUP_OBJ and ARCHIVE_ENTRY_ACL_OTHER are equivalent to user, group and other in the classic Unix permission model and specify non-extended ACL entries. All files have an access ACL () ARCHIVE_ENTRY_ACL_TYPE_ACCESS. This specifies the permissions required for access to the file itself. Directories have an additional ACL () ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, which controls the initial access ACL for newly-created directory entries. === NFSv4 Access Control Lists=== An NFSv4 ACL consists of multiple individual entries called Access Control Entries (ACEs). There are four possible types of an NFSv4 ACE:
ARCHIVE_ENTRY_ACL_TYPE_ALLOW Allow principal to perform actions requiring given permissions.
ARCHIVE_ENTRY_ACL_TYPE_DENY Prevent principal from performing actions requiring given permissions.
ARCHIVE_ENTRY_ACL_TYPE_AUDIT Log access attempts by principal which require given permissions.
ARCHIVE_ENTRY_ACL_TYPE_ALARM Trigger a system alarm on access attempts by principal which require given permissions.
The specifies the principal to which the permission applies. Valid values are:
ARCHIVE_ENTRY_ACL_USER The user specified by the name field.
ARCHIVE_ENTRY_ACL_USER_OBJ The owner of the file.
ARCHIVE_ENTRY_ACL_GROUP The group specified by the name field.
ARCHIVE_ENTRY_ACL_GROUP_OBJ The group which owns the file.
ARCHIVE_ENTRY_ACL_EVERYONE Any principal who is not the file owner or a member of the owning group.
Entries with the ARCHIVE_ENTRY_ACL_USER or ARCHIVE_ENTRY_ACL_GROUP tag store the user and group name in the string and optionally the user or group ID in the integer. NFSv4 ACE permissions and flags are stored in the same bitfield. Some permissions share the same constant and permission character but have different effect on directories than on files. The following ACE permissions are supported:
ARCHIVE_ENTRY_ACL_READ_DATA (.B r ) Read data (file).
ARCHIVE_ENTRY_ACL_LIST_DIRECTORY (.B r ) List entries (directory).
ARCHIVE_ENTRY_ACL_WRITE_DATA (.B w )
Write data (file).
ARCHIVE_ENTRY_ACL_ADD_FILE (.B w )
Create files (directory).
ARCHIVE_ENTRY_ACL_EXECUTE (.B x ) Execute file or change into a directory.
ARCHIVE_ENTRY_ACL_APPEND_DATA (.B p ) Append data (file).
ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY (.B p ) Create subdirectories (directory).
ARCHIVE_ENTRY_ACL_DELETE_CHILD (.B D ) Remove files and subdirectories inside a directory.
ARCHIVE_ENTRY_ACL_DELETE (.B d ) Remove file or directory.
ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES (.B a ) Read file or directory attributes.
ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES (.B A ) Write file or directory attributes.
ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS (.B R ) Read named file or directory attributes.
ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS (.B W ) Write named file or directory attributes.
ARCHIVE_ENTRY_ACL_READ_ACL (.B c ) Read file or directory ACL.
ARCHIVE_ENTRY_ACL_WRITE_ACL (.B C ) Write file or directory ACL.
ARCHIVE_ENTRY_ACL_WRITE_OWNER (.B o ) Change owner of a file or directory.
ARCHIVE_ENTRY_ACL_SYNCHRONIZE (.B s ) Use synchronous I/O.
The following NFSv4 ACL inheritance flags are supported:
ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT (.B f ) Inherit parent directory ACE to files.
ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT (.B d ) Inherit parent directory ACE to subdirectories.
ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY (.B i ) Only inherit, do not apply the permission on the directory itself.
ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT (.B n ) Do not propagate inherit flags. Only first-level entries inherit ACLs.
ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (.B S ) Trigger alarm or audit on successful access.
ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS (.B F ) Trigger alarm or audit on failed access.
ARCHIVE_ENTRY_ACL_ENTRY_INHERITED (.B I ) Mark that ACE was inherited.
=== Functions=== '''archive_entry_acl_add_entry'''() and '''archive_entry_acl_add_entry_w'''() add a single ACL entry. For the access ACL and non-extended principals, the classic Unix permissions are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries. '''archive_entry_acl_clear'''() removes all ACL entries and resets the enumeration pointer. '''archive_entry_acl_count'''() counts the ACL entries that have the given type mask. can be the bitwise-or of
ARCHIVE_ENTRY_ACL_TYPE_ACCESS
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
for POSIX.1e ACLs and
ARCHIVE_ENTRY_ACL_TYPE_ALLOW
ARCHIVE_ENTRY_ACL_TYPE_DENY
ARCHIVE_ENTRY_ACL_TYPE_AUDIT
ARCHIVE_ENTRY_ACL_TYPE_ALARM
for NFSv4 ACLs. For POSIX.1e ACLs if ARCHIVE_ENTRY_ACL_TYPE_ACCESS is included and at least one extended ACL entry is found, the three non-extended ACLs are added. '''archive_entry_acl_from_text'''() and '''archive_entry_acl_from_text_w'''() add new (or merge with existing) ACL entries from (wide) text. The argument may take one of the following values:
ARCHIVE_ENTRY_ACL_TYPE_ACCESS
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
ARCHIVE_ENTRY_ACL_TYPE_NFS4
Supports all formats that can be created with '''archive_entry_acl_to_text'''() or respectively '''archive_entry_acl_to_text_w'''(). Existing ACL entries are preserved. To get a clean new ACL from text '''archive_entry_acl_clear'''() must be called first. Entries prefixed with "default:" are treated as ARCHIVE_ENTRY_ACL_TYPE_DEFAULT unless is ARCHIVE_ENTRY_ACL_TYPE_NFS4. Invalid entries, non-parseable ACL entries and entries beginning with the Sq # character (comments) are skipped. '''archive_entry_acl_next'''() returns the next entry of the ACL list. This function may only be called after '''archive_entry_acl_reset'''() has indicated the presence of extended ACL entries. '''archive_entry_acl_reset'''() prepares reading the list of ACL entries with '''archive_entry_acl_next'''(). The function returns 0 if no non-extended ACLs are found. In this case, the access permissions should be obtained by [[ManPageArchiveEntryMode3]] or set using [[chmod(2)|http://www.freebsd.org/cgi/man.cgi?query=chmod&sektion=2]]. Otherwise, the function returns the same value as '''archive_entry_acl_count'''(). '''archive_entry_acl_to_text'''() and '''archive_entry_acl_to_text_w'''() convert the ACL entries for the given type into a (wide) string of ACL entries separated by newline. If the pointer is not NULL, then the function shall return the length of the string (not including the NULL terminator) in the location pointed to by . The argument is a bitwise-or. The following flags are effective only on POSIX.1e ACL:
ARCHIVE_ENTRY_ACL_TYPE_ACCESS Output access ACLs.
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT Output POSIX.1e default ACLs.
ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT Prefix each default ACL entry with the word "default:".
ARCHIVE_ENTRY_ACL_STYLE_SOLARIS The mask and other ACLs do not contain a double colon.
The following flags are effective only on NFSv4 ACL:
ARCHIVE_ENTRY_ACL_STYLE_COMPACT Do not output minus characters for unset permissions and flags in NFSv4 ACL permission and flag fields.
The following flags are effective on both POSIX.1e and NFSv4 ACL:
ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID Add an additional colon-separated field containing the user or group id.
ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA Separate ACL entries with comma instead of newline.
If the archive entry contains NFSv4 ACLs, all types of NFSv4 ACLs are returned. If the entry contains POSIX.1e ACLs and none of the flags ARCHIVE_ENTRY_ACL_TYPE_ACCESS or ARCHIVE_ENTRY_ACL_TYPE_DEFAULT are specified, both access and default entries are returned and default entries are prefixed with "default:". '''archive_entry_acl_types'''() gets ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this function is a very efficient way to detect if an ACL already contains POSIX.1e or NFSv4 ACL entries. == RETURN VALUES == '''archive_entry_acl_count'''() and '''archive_entry_acl_reset'''() return the number of ACL entries that match the given type mask. For POSIX.1e ACLS if the type mask includes ARCHIVE_ENTRY_ACL_TYPE_ACCESS and at least one extended ACL entry exists, the three classic Unix permissions are counted. '''archive_entry_acl_from_text'''() and '''archive_entry_acl_from_text_w'''() return ARCHIVE_OK if all entries were successfully parsed and ARCHIVE_WARN if one or more entries were invalid or non-parseable. '''archive_entry_acl_next'''() returns ARCHIVE_OK on success, ARCHIVE_EOF if no more ACL entries exist and ARCHIVE_WARN if '''archive_entry_acl_reset'''() has not been called first. '''archive_entry_acl_to_text'''() returns a string representing the ACL entries matching the given type and flags on success or NULL on error. '''archive_entry_acl_to_text_w'''() returns a wide string representing the ACL entries matching the given type and flags on success or NULL on error. '''archive_entry_acl_types'''() returns a bitmask of ACL entry types or 0 if archive entry has no ACL entries. == SEE ALSO == [[ManPageArchiveEntry3]], [[ManPageLibarchive3]] @ 1.8 log @libarchive: updated to 3.7.4 Libarchive 3.7.4 is a bugfix and security release Security fixes: rar: Fix OOB in rar e8 filter (CVE-2024-26256) zip: Fix out of boundary access Important bugfixes: 7zip: Limit amount of properties bsdtar: Fix error handling around strtol() usages passphrase: Improve newline handling on Windows passphrase: Never allow empty passwords rar: Fix "File CRC Error" when extracting specific rar4 archives xar: Avoid infinite link loop zip: Update AppleDouble support for directories zstd: Implement core detection @ text @d128 1 a128 1 A NFSv4 ACL consists of multiple individual entries called Access Control d131 1 a131 1 There are four possible types of a NFSv4 ACE: d336 2 a337 2 return the next entry of the ACL list. This functions may only be called after d342 1 a342 1 prepare reading the list of ACL entries with d380 1 a380 1 The mask and other ACLs don not contain a double colon. d402 1 a402 1 It the entry contains POSIX.1e ACLs and none of the flags d411 1 a411 1 get ACL entry types contained in an archive entry's ACL. d419 1 a419 1 returns the number of ACL entries that match the given type mask. @ 1.7 log @libarchive: updated to 3.7.2 Libarchive 3.7.2 is a security, bugfix and feature release. Security fixes: Multiple vulnerabilities have been fixed in the PAX writer (1b4e0d0) Important bugfixes: bsdunzip(1) now correctly handles arguments following an -x after the zipfile New features: bsdunzip(1) now supports the "--version" flag 7-zip reader now translates Windows permissions into UNIX permissions uudecode filter in raw mode now supports file name and file mode zstd filter now supports the "long" write option Libarchive 3.7.1 is a security, feature and bugfix release. Security fixes: SEGV and stack buffer overflow in verbose mode of cpio Feature updates: bsdunzip updated to match latest upstream code Important bugfixes: miscellaneous functional bugfixes build fixes on multiple platforms Libarchive 3.7.0 is a feature and bugfix release. New features: bsdunzip: new tool ported from FreeBSD drop-in replacement for Info-ZIP unzip, not yet ported for Windows 7zip reader: support for Zstandard compression 7zip reader: support for ARM64 filter zstd filter: support for multi-frame zstd archives Other notable bugfixes and improvements: pax: fix year 2038 problem on platforms with 64-bit time_t Windows: Universal Windows Platform (UWP) fixes and improvements Windows: bcrypt usage fixes and improvements Windows: time function usage fixes and improvements @ text @d383 1 a383 1 The following flags are effecive only on NFSv4 ACL: @ 1.6 log @libarchive: Update to 3.4.3 Libarchive 3.4.3 is a feature and bugfix release. New features: support for pzstd compressed files (#1357) support for RHT.security.selinux tar extended attribute (#1348) Important bugfixes: various zstd fixes and improvements (#1342 #1352 #1359) child process handling fixes (#1372) Libarchive 3.4.2 is a feature and security release. New features: support for atomic file extraction (bsdtar -x --safe-writes) (#1289) support for mbed TLS (PolarSSL) (#1301) Important bugfixes: security fixes in RAR5 reader (#1280 #1326) compression buffer fix in XAR writer (#1317) fix uname and gname longer than 32 characters in PAX writer (#1319) fix segfault when archiving hard links in ISO9660 and XAR writers (#1325) fix support for extracting 7z archive entries with Delta filter (#987) Libarchive 3.4.1 is a feature and security release. New features: Unicode filename support for reading lha/lzh archives New pax write option "xattrhdr" Important bugfixes: security fixes in wide string processing (#1276 #1298) security fixes in RAR5 reader (#1212 #1217 #1296) security fixes and optimizations to write filter logic (#351) security fix related to use of readlink(2) (1dae5a5) sparse file handling fixes (#1218 #1260) Thanks to all contributors and bug reporters. Special thanks to Christos Zoulas (@@zoulasc) from NetBSD for the atomic file extraction feature. @ text @d346 1 a346 1 [[ManPagerchiventryode3]] d457 2 a458 2 [[ManPagerchiventry3]], [[ManPageibarchive3]] @ 1.5 log @Update for libarchive-3.4.0: - improvements for Android APK and JAR archives - better support for non-recursive list and extract - tar --exclude-vcs support - fixes for file attributes and flags handling - zipx support - rar 5.0 reader @ text @a9 1 '''archive_entry_acl_next_w''', a49 4 '''archive_entry_acl_next_w'''(''struct archive_entry *a'', ''int type'', ''int *ret_type'', ''int *ret_permset'', ''int *ret_tag'', ''int *ret_qual'', ''const wchar_t **ret_name'');
''int''
d66 1 a66 1 extend the standard Unix perssion model. d69 2 a70 1 supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by d75 1 a75 1 Each entry specifies the permission set as bitmask of basic permissions. d99 1 a99 1 The group specied by the name field. d102 1 a102 1 The group who owns the file. d108 1 a108 1 Any principal who is not file owner or a member of the owning group. d119 1 a119 1 All files with have an access ACL d126 1 a126 1 which controls the initial access ACL for newly created directory entries. d158 1 a158 1 The group specied by the name field. d161 1 a161 1 The group who owns the file. d164 1 a164 1 Any principal who is not file owner or a member of the owning group. d176 4 a179 3 bitfield. Some permissions share the same constant and permission character but have different effect on directories than on files. The following ACE permissions are supported: d245 2 a246 1 Do not propagate inherit flags. Only first-level entries inherit ACLs. d263 2 a264 2 are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries. d289 2 a290 1 for NFSv4 ACLs. For POSIX.1e ACLs if d302 2 a303 1 text. The argument d315 1 a315 1 or respective d317 2 a318 1 Existing ACL entries are preserved. To get a clean new ACL from text d320 2 a321 1 must be called first. Entries prefixed with a335 2 and '''archive_entry_acl_next_w'''() d343 2 a344 4 '''archive_entry_acl_next'''() or '''archive_entry_acl_next_w'''(). The function returns either 0, if no non-extended ACLs are found. d346 1 a346 1 [[ManPageArchiveEntryMode3]] d357 2 a358 1 string of ACL entries separated by newline. If the pointer d411 2 a412 1 get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 d435 1 a435 3 and '''archive_entry_acl_next_w'''() return d457 2 a458 2 [[ManPageArchiveEntry3]], [[ManPageLibarchive3]] @ 1.4 log @Merge for libarchive-3.3.2. @ text @d348 1 a348 1 [[ManPagerchiventryode3]] d459 2 a460 2 [[ManPagerchiventry3]], [[ManPageibarchive3]] @ 1.3 log @Merge libarchive-3.3.1. @ text @d8 1 a8 1 '''archive_entry_acl_from_text_w,''' d251 1 a251 1 Trigger alarm or audit on succesful access. d265 1 a265 1 are updated. An archive enry cannot contain both POSIX.1e and NFSv4 ACL d294 1 a294 1 the three non-extened ACLs are added. d348 1 a348 1 [[ManPageArchiveEntryMode3]] d359 1 a359 1 string of ACL entries separated by newline. If the the pointer d459 2 a460 2 [[ManPageArchiveEntry3]], [[ManPageLibarchive3]] @ 1.2 log @Update for libarchive 3.2.1. @ text @d7 2 d12 3 a14 1 '''archive_entry_acl_text_w''' d39 8 d57 5 a61 1 ''const wchar_t *'' d63 5 a67 1 '''archive_entry_acl_text_w'''(''struct archive_entry *a'', ''int flags''); d69 3 a71 3 An "Access Control List" is a generalisation of the classic Unix permission system. d74 5 a78 4 is derived from the POSIX.1e draft, but restricted to simplify dealing with practical implementations in various Operating Systems and archive formats. An ACL consists of a number of independent entries. d80 2 a81 1 Valid permissions are: d84 1 a84 1 ARCHIVE_ENTRY_ACL_EXECUTE d86 1 a86 1 ARCHIVE_ENTRY_ACL_WRITE d88 1 a88 1 ARCHIVE_ENTRY_ACL_READ d92 2 a93 1 The tag specifies the principal to which the permission applies. a94 1
d112 3 a114 2 Any principal who doesn't have a user or group entry.
d123 1 a123 1 All files have an access ACL d131 3 d135 125 d265 2 a266 1 are updated. d274 2 d277 15 a291 3 and ARCHIVE_ENTRY_ACL_TYPE_DEFAULT. If d296 37 d348 1 a348 1 [[ManPagerchiventryode3]] d354 1 a354 4 '''archive_entry_acl_text_w'''() converts the ACL entries for the given type mask into a wide string. In addition to the normal type flags, ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID d356 20 d377 28 a404 5 can be specified to further customize the result. The returned long string is valid until the next call to '''archive_entry_acl_clear'''(), '''archive_entry_acl_add_entry'''(), '''archive_entry_acl_add_entry_w'''() d406 9 a414 1 '''archive_entry_acl_text_w'''(). d420 1 a420 1 If the type mask includes d425 9 d448 10 a457 9 '''archive_entry_text_w'''() returns a wide string representation of the ACL entrise matching the given type mask. The returned long string is valid until the next call to '''archive_entry_acl_clear'''(), '''archive_entry_acl_add_entry'''(), '''archive_entry_acl_add_entry_w'''() or '''archive_entry_acl_text_w'''(). d459 2 a460 7 [[ManPagerchiventry3]] [[ManPageibarchive3]], == BUGS == ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID and ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT are not documented. @ 1.1 log @Changes 3.1.2: This is a maintenance update to fix issues with the new RAR seeking feature. This new release also contains fixes for build failures when building libarchive using Visual Studio 2012 and MinGW. @ text @d17 1 a17 1 '''void''' d21 1 a21 1 '''void''' d25 1 a25 1 '''void''' d29 1 a29 1 '''int''' d33 1 a33 1 '''int''' d37 1 a37 1 '''int''' d41 1 a41 1 '''int''' d45 1 a45 1 '''const wchar_t *''' d145 1 a145 1 '''archive_entry_mode'''(3) d147 1 a147 1 '''chmod'''(2). d198 2 a199 2 '''archive'''(3), '''archive_entry'''(3) @ 1.1.1.1 log @Import libarchive-3.2.1: - security fixes and other bugfixes - support for multhreading in xz 5.2+ @ text @d17 1 a17 1 ''void'' d21 1 a21 1 ''void'' d25 1 a25 1 ''void'' d29 1 a29 1 ''int'' d33 1 a33 1 ''int'' d37 1 a37 1 ''int'' d41 1 a41 1 ''int'' d45 1 a45 1 ''const wchar_t *'' d145 1 a145 1 [[ManPagerchiventryode3]] d147 1 a147 1 [[chmod(2)|http://www.freebsd.org/cgi/man.cgi?query=chmod&sektion=2]]. d198 2 a199 2 [[ManPagerchiventry3]] [[ManPageibarchive3]], @ 1.1.1.2 log @Import libarchive-3.3.1. @ text @a6 2 '''archive_entry_acl_from_text''', '''archive_entry_acl_from_text_w,''' d10 1 a10 3 '''archive_entry_acl_to_text''', '''archive_entry_acl_to_text_w''', '''archive_entry_acl_types''' a34 8 '''archive_entry_acl_from_text'''(''struct archive_entry *a'', ''const char *text'', ''int type'');
''int''
'''archive_entry_acl_from_text_w'''(''struct archive_entry *a'', ''const wchar_t *text'', ''int type'');
''int''
d45 1 a45 5 ''char *''
'''archive_entry_acl_to_text'''(''struct archive_entry *a'', ''ssize_t *len_p'', ''int flags'');
''wchar_t *'' d47 1 a47 5 '''archive_entry_acl_to_text_w'''(''struct archive_entry *a'', ''ssize_t *len_p'', ''int flags'');
''int''
'''archive_entry_acl_types'''(''struct archive_entry *a''); d49 3 a51 3 The "Access Control Lists (ACLs)" extend the standard Unix perssion model. d54 4 a57 5 supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by various levels of ACL support in operating systems, file systems and archive formats. === POSIX.1e Access Control Lists=== A POSIX.1e ACL consists of a number of independent entries. d59 1 a59 2 Valid permissions in the are: d62 1 a62 1 ARCHIVE_ENTRY_ACL_READ (.B r ) d64 1 a64 1 ARCHIVE_ENTRY_ACL_WRITE (.B w ) d66 1 a66 1 ARCHIVE_ENTRY_ACL_EXECUTE (.B x ) d70 1 a70 2 The specifies the principal to which the permission applies. d72 1 d90 2 a91 3 Any principal who is not file owner or a member of the owning group. d100 1 a100 1 All files with have an access ACL a107 3 === NFSv4 Access Control Lists=== A NFSv4 ACL consists of multiple individual entries called Access Control Entries (ACEs). a108 125 There are four possible types of a NFSv4 ACE:
ARCHIVE_ENTRY_ACL_TYPE_ALLOW Allow principal to perform actions requiring given permissions.
ARCHIVE_ENTRY_ACL_TYPE_DENY Prevent principal from performing actions requiring given permissions.
ARCHIVE_ENTRY_ACL_TYPE_AUDIT Log access attempts by principal which require given permissions.
ARCHIVE_ENTRY_ACL_TYPE_ALARM Trigger a system alarm on access attempts by principal which require given permissions.
The specifies the principal to which the permission applies. Valid values are:
ARCHIVE_ENTRY_ACL_USER The user specified by the name field.
ARCHIVE_ENTRY_ACL_USER_OBJ The owner of the file.
ARCHIVE_ENTRY_ACL_GROUP The group specied by the name field.
ARCHIVE_ENTRY_ACL_GROUP_OBJ The group who owns the file.
ARCHIVE_ENTRY_ACL_EVERYONE Any principal who is not file owner or a member of the owning group.
Entries with the ARCHIVE_ENTRY_ACL_USER or ARCHIVE_ENTRY_ACL_GROUP tag store the user and group name in the string and optionally the user or group ID in the integer. NFSv4 ACE permissions and flags are stored in the same bitfield. Some permissions share the same constant and permission character but have different effect on directories than on files. The following ACE permissions are supported:
ARCHIVE_ENTRY_ACL_READ_DATA (.B r ) Read data (file).
ARCHIVE_ENTRY_ACL_LIST_DIRECTORY (.B r ) List entries (directory).
ARCHIVE_ENTRY_ACL_WRITE_DATA (.B w )
Write data (file).
ARCHIVE_ENTRY_ACL_ADD_FILE (.B w )
Create files (directory).
ARCHIVE_ENTRY_ACL_EXECUTE (.B x ) Execute file or change into a directory.
ARCHIVE_ENTRY_ACL_APPEND_DATA (.B p ) Append data (file).
ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY (.B p ) Create subdirectories (directory).
ARCHIVE_ENTRY_ACL_DELETE_CHILD (.B D ) Remove files and subdirectories inside a directory.
ARCHIVE_ENTRY_ACL_DELETE (.B d ) Remove file or directory.
ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES (.B a ) Read file or directory attributes.
ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES (.B A ) Write file or directory attributes.
ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS (.B R ) Read named file or directory attributes.
ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS (.B W ) Write named file or directory attributes.
ARCHIVE_ENTRY_ACL_READ_ACL (.B c ) Read file or directory ACL.
ARCHIVE_ENTRY_ACL_WRITE_ACL (.B C ) Write file or directory ACL.
ARCHIVE_ENTRY_ACL_WRITE_OWNER (.B o ) Change owner of a file or directory.
ARCHIVE_ENTRY_ACL_SYNCHRONIZE (.B s ) Use synchronous I/O.
The following NFSv4 ACL inheritance flags are supported:
ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT (.B f ) Inherit parent directory ACE to files.
ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT (.B d ) Inherit parent directory ACE to subdirectories.
ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY (.B i ) Only inherit, do not apply the permission on the directory itself.
ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT (.B n ) Do not propagate inherit flags. Only first-level entries inherit ACLs.
ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (.B S ) Trigger alarm or audit on succesful access.
ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS (.B F ) Trigger alarm or audit on failed access.
ARCHIVE_ENTRY_ACL_ENTRY_INHERITED (.B I ) Mark that ACE was inherited.
=== Functions=== d114 1 a114 2 are updated. An archive enry cannot contain both POSIX.1e and NFSv4 ACL entries. a121 2
d123 3 a125 15
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
for POSIX.1e ACLs and
ARCHIVE_ENTRY_ACL_TYPE_ALLOW
ARCHIVE_ENTRY_ACL_TYPE_DENY
ARCHIVE_ENTRY_ACL_TYPE_AUDIT
ARCHIVE_ENTRY_ACL_TYPE_ALARM
for NFSv4 ACLs. For POSIX.1e ACLs if a129 37 '''archive_entry_acl_from_text'''() and '''archive_entry_acl_from_text_w'''() add new (or merge with existing) ACL entries from (wide) text. The argument may take one of the following values:
ARCHIVE_ENTRY_ACL_TYPE_ACCESS
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
ARCHIVE_ENTRY_ACL_TYPE_NFS4
Supports all formats that can be created with '''archive_entry_acl_to_text'''() or respective '''archive_entry_acl_to_text_w'''(). Existing ACL entries are preserved. To get a clean new ACL from text '''archive_entry_acl_clear'''() must be called first. Entries prefixed with "default:" are treated as ARCHIVE_ENTRY_ACL_TYPE_DEFAULT unless is ARCHIVE_ENTRY_ACL_TYPE_NFS4. Invalid entries, non-parseable ACL entries and entries beginning with the Sq # character (comments) are skipped. d145 1 a145 1 [[ManPageArchiveEntryMode3]] d151 4 a154 1 '''archive_entry_acl_to_text'''() a155 20 '''archive_entry_acl_to_text_w'''() convert the ACL entries for the given type into a (wide) string of ACL entries separated by newline. If the the pointer is not NULL, then the function shall return the length of the string (not including the NULL terminator) in the location pointed to by . The argument is a bitwise-or. The following flags are effective only on POSIX.1e ACL:
ARCHIVE_ENTRY_ACL_TYPE_ACCESS Output access ACLs.
ARCHIVE_ENTRY_ACL_TYPE_DEFAULT Output POSIX.1e default ACLs.
d157 5 a161 28 Prefix each default ACL entry with the word "default:".
ARCHIVE_ENTRY_ACL_STYLE_SOLARIS The mask and other ACLs don not contain a double colon.
The following flags are effecive only on NFSv4 ACL:
ARCHIVE_ENTRY_ACL_STYLE_COMPACT Do not output minus characters for unset permissions and flags in NFSv4 ACL permission and flag fields.
The following flags are effective on both POSIX.1e and NFSv4 ACL:
ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID Add an additional colon-separated field containing the user or group id.
ARCHIVE_ENTRY_ACL_STYLE_SEPARATOR_COMMA Separate ACL entries with comma instead of newline.
If the archive entry contains NFSv4 ACLs, all types of NFSv4 ACLs are returned. It the entry contains POSIX.1e ACLs and none of the flags ARCHIVE_ENTRY_ACL_TYPE_ACCESS d163 1 a163 9 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT are specified, both access and default entries are returned and default entries are prefixed with "default:". '''archive_entry_acl_types'''() get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this function is a very efficient way to detect if an ACL already contains POSIX.1e or NFSv4 ACL entries. d169 1 a169 1 For POSIX.1e ACLS if the type mask includes a173 9 '''archive_entry_acl_from_text'''() and '''archive_entry_acl_from_text_w'''() return ARCHIVE_OK if all entries were successfully parsed and ARCHIVE_WARN if one or more entries were invalid or non-parseable. d188 9 a196 10 '''archive_entry_acl_to_text'''() returns a string representing the ACL entries matching the given type and flags on success or NULL on error. '''archive_entry_acl_to_text_w'''() returns a wide string representing the ACL entries matching the given type and flags on success or NULL on error. '''archive_entry_acl_types'''() returns a bitmask of ACL entry types or 0 if archive entry has no ACL entries. d198 7 a204 2 [[ManPageArchiveEntry3]], [[ManPageLibarchive3]] @ 1.1.1.3 log @Import libarchive-3.3.2 + 9de5f3 + f9dacbf: - Support NFS4 ACLs on Linux - Bugfixes @ text @d8 1 a8 1 '''archive_entry_acl_from_text_w''', d251 1 a251 1 Trigger alarm or audit on successful access. d265 1 a265 1 are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL d294 1 a294 1 the three non-extended ACLs are added. d348 1 a348 1 [[ManPagerchiventryode3]] d359 1 a359 1 string of ACL entries separated by newline. If the pointer d459 2 a460 2 [[ManPagerchiventry3]], [[ManPageibarchive3]] @ 1.1.1.4 log @Import libarchive 3.4.0 @ text @d348 1 a348 1 [[ManPageArchiveEntryMode3]] d459 2 a460 2 [[ManPageArchiveEntry3]], [[ManPageLibarchive3]] @ 1.1.1.5 log @Import libarchive 3.7.2 @ text @d10 1 d51 4 d71 1 a71 1 extend the standard Unix permission model. d74 1 a74 2 supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by d79 1 a79 1 Each entry specifies the permission set as a bitmask of basic permissions. d103 1 a103 1 The group specified by the name field. d106 1 a106 1 The group which owns the file. d112 1 a112 1 Any principal who is not the file owner or a member of the owning group. d123 1 a123 1 All files have an access ACL d130 1 a130 1 which controls the initial access ACL for newly-created directory entries. d162 1 a162 1 The group specified by the name field. d165 1 a165 1 The group which owns the file. d168 1 a168 1 Any principal who is not the file owner or a member of the owning group. d180 3 a182 4 bitfield. Some permissions share the same constant and permission character but have different effect on directories than on files. The following ACE permissions are supported: d248 1 a248 2 Do not propagate inherit flags. Only first-level entries inherit ACLs. d265 2 a266 2 are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries. d291 1 a291 2 for NFSv4 ACLs. For POSIX.1e ACLs if d303 1 a303 2 text. The argument d315 1 a315 1 or respectively d317 1 a317 2 Existing ACL entries are preserved. To get a clean new ACL from text d319 1 a319 2 must be called first. Entries prefixed with d334 2 d343 4 a346 2 '''archive_entry_acl_next'''(). The function returns 0 if no non-extended ACLs are found. d359 1 a359 2 string of ACL entries separated by newline. If the pointer d412 1 a412 2 get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 d435 3 a437 1 returns @ 1.1.1.6 log @Libarchive 3.7.4 is a bugfix and security release Security fixes: rar: Fix OOB in rar e8 filter (CVE-2024-26256) zip: Fix out of boundary access Important bugfixes: 7zip: Limit amount of properties bsdtar: Fix error handling around strtol() usages passphrase: Improve newline handling on Windows passphrase: Never allow empty passwords rar: Fix "File CRC Error" when extracting specific rar4 archives xar: Avoid infinite link loop zip: Update AppleDouble support for directories zstd: Implement core detection @ text @d383 1 a383 1 The following flags are effective only on NFSv4 ACL: @ 1.1.1.7 log @libarchive: import version 3.8.10 @ text @d128 1 a128 1 An NFSv4 ACL consists of multiple individual entries called Access Control d131 1 a131 1 There are four possible types of an NFSv4 ACE: d336 2 a337 2 returns the next entry of the ACL list. This function may only be called after d342 1 a342 1 prepares reading the list of ACL entries with d380 1 a380 1 The mask and other ACLs do not contain a double colon. d402 1 a402 1 If the entry contains POSIX.1e ACLs and none of the flags d411 1 a411 1 gets ACL entry types contained in an archive entry's ACL. d419 1 a419 1 return the number of ACL entries that match the given type mask. @