18 Commits
Author SHA1 Message Date
NihilDigit 9a46155665 Tests: Cover ARM64 BCJ 7z extraction
Add a small 7z fixture whose filter chain is ARM64 BCJ followed by
LZMA2.  This exercises extraction through CMake's bundled libarchive
and liblzma path.

The fixture was generated with 7-Zip 25.01 (arm64).  The payload is a
16-byte AArch64 instruction sequence:

  1f2003d500000094000000141f2003d5

The payload mtime was set to 2026-06-21T00:00:00Z and then archived
with:

  7z a -m0=ARM64 -m1=LZMA2 -mb0:1 -mtm=on -mtc=off -mta=off \
    7zip-arm64-bcj.7z payload.bin

The resulting 7zip-arm64-bcj.7z has SHA256:

  3DE9111E71C6AA3CBD604460040EBBE6F57E8B00D1D5C5343AC07D435AA2A8D2
2026-06-24 10:18:49 -04:00
Alex Overchenko 21eb53e9eb tar: Add option to specify the encoding of archive pathnames
Use OEM by default for backward compatibility

Fixes: #26903
2026-03-11 08:44:44 +03:00
Leslie P. Polzer 03f19aa4ea cmSystemTools: Fix path traversal vulnerability in archive extraction
Add security flags to libarchive extraction to prevent path traversal
(Zip Slip) and absolute path attacks:

- ARCHIVE_EXTRACT_SECURE_NODOTDOT: Block ".." path components
- ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS: Block absolute paths
- ARCHIVE_EXTRACT_SECURE_SYMLINKS: Block symlinks escaping extract dir

This hardens both `cmake -E tar` and `file(ARCHIVE_EXTRACT)` against
malicious archives that attempt to write files outside the intended
extraction directory.
2026-01-16 08:54:07 -05:00
AJIOB e4e29aeb66 cli tar: extend supported compression methods 2026-01-06 09:49:57 +03:00
AJIOB 94ae247d44 cli tar: support different algorithms for zip & 7z
Fixes: #27443
2025-12-11 12:00:31 -05:00
AJIOB d4d2a6a19d cli tar: support compression level
Fixes #27422
2025-12-05 20:00:24 +03:00
Brad King 9149ac3f37 Merge topic 'fix-27420'
4fdfa0db1a file(ARCHIVE_CREATE): support multithreading compression
cbf71b21b2 cli tar: support multithreading compression

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !11460
2025-12-05 09:04:58 -05:00
AJIOB cbf71b21b2 cli tar: support multithreading compression
Fixes: #27420
2025-12-03 02:45:30 -05:00
AJIOB 5b87a5d53e cli tar: implement LZMA support
Fixes: #27433
2025-12-02 10:44:49 +03:00
Kasper Laudrup 0b7fd783f8 cmake -E tar: Add --touch option
Similar to GNU tar add a --touch option to the tar extract command to
skip extracting the timestamps from the files in the archive
effectively touching them as if they were just created.

Issue: #22746
2022-03-23 14:41:34 +01:00
Kasper Laudrup f692cba34b Tests: Add test for 'cmake -E tar --mtime' option
Add a test for ensuring the `--mtime` option works as expected.
2022-03-23 14:41:34 +01:00
Brad King 05af1770a0 Merge topic 'tar-zstd-compression'
53cb1f2d04 cmake: Teach cmake -E tar command, Zstandard compression

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3357
2019-05-30 09:39:35 -04:00
Bartosz Kosiorek c8e217e0a7 cmake: tar: Allow selective extracting and listing of archives 2019-05-23 10:08:22 -04:00
Bartosz Kosiorek 53cb1f2d04 cmake: Teach cmake -E tar command, Zstandard compression
Fixes #18657
2019-05-22 03:46:55 +02:00
Bartosz Kosiorek ea9a2c1759 cmake: tar: Parse 'cmake -E tar' arguments 2019-03-20 09:28:49 -04:00
Bartosz Kosiorek 8634576dcb cmake: Don't interrupt archive creation if unable to read a file.
Rationale:
Currently during creation of archive by 'tar',
if error appears, it interrupt archive creation.
As a result only part of files are archived

This behaviour is not consistent with 'copy_directory', native 'tar'
and other command behaviour.
With this Merge Request this behaviour is fixed.
2019-03-18 17:55:35 +01:00
Bartosz Kosiorek 7c47fd8cd1 cmake: tar: Display warning when no files provided during archive creation 2019-03-18 17:08:20 +01:00
Nils Gladitz 6c4781baa9 Tests: Consolidate, refactor and extend -E tar tests 2015-04-10 08:32:32 -04:00