]> git.ipfire.org Git - thirdparty/xz.git/log
thirdparty/xz.git
15 months agoBuild: Omit PDF man pages from the package
Lasse Collin [Fri, 19 Apr 2024 11:10:39 +0000 (14:10 +0300)] 
Build: Omit PDF man pages from the package

pdf-local rule was added to create the PDFs still with "make pdf".
The install rules are missing but that likely doesn't matter at all.

15 months agowindows/build.bash: Don't copy PDF man pages to the package
Lasse Collin [Fri, 19 Apr 2024 10:54:39 +0000 (13:54 +0300)] 
windows/build.bash: Don't copy PDF man pages to the package

15 months agoTests: test_index: Fix failures when features are disabled
Lasse Collin [Sat, 27 Apr 2024 22:34:50 +0000 (01:34 +0300)] 
Tests: test_index: Fix failures when features are disabled

Fixes: cd88423e76d54eb72aea037364f3ebb21f122503
15 months agoCMake: Keep the build working if the "tests" directory is missing
Lasse Collin [Sat, 20 Apr 2024 14:09:11 +0000 (17:09 +0300)] 
CMake: Keep the build working if the "tests" directory is missing

This moves the tests section as is from CMakeLists.txt into
tests/tests.cmake. CMakeLists.txt now includes tests/tests.cmake
if the latter file exists.

Now it's possible to delete the whole "tests" directory and
building with CMake will still work normally, just without
the tests. This way the tests are readily available for those
who want them, and those who won't run the tests anyway have
a straightforward way to ensure that nothing from the "tests"
directory can affect the build process.

15 months agoTests: Remove x86 and SPARC BCJ tests
Lasse Collin [Sat, 20 Apr 2024 10:12:50 +0000 (13:12 +0300)] 
Tests: Remove x86 and SPARC BCJ tests

These are very old but the exact test file isn't easy to reproduce
as it was compiled from a short C program (bcj_test.c) long ago.
These tests weren't very good anyway, just a little better than nothing.

15 months agoTests: test_index: Edit a misleading test
Lasse Collin [Sat, 27 Apr 2024 15:30:40 +0000 (18:30 +0300)] 
Tests: test_index: Edit a misleading test

15 months agoTests: test_index: Use minimal values to test integer overflow
Lasse Collin [Sat, 27 Apr 2024 13:46:01 +0000 (16:46 +0300)] 
Tests: test_index: Use minimal values to test integer overflow

15 months agoTests: test_index: Test lzma_index_buffer_decode() more
Lasse Collin [Sat, 27 Apr 2024 12:13:39 +0000 (15:13 +0300)] 
Tests: test_index: Test lzma_index_buffer_decode() more

15 months agoTests: test_index: Test that *i = NULL is done on LZMA_PROG_ERROR
Lasse Collin [Sat, 27 Apr 2024 12:08:29 +0000 (15:08 +0300)] 
Tests: test_index: Test that *i = NULL is done on LZMA_PROG_ERROR

On LZMA_DATA_ERROR from lzma_index_buffer_decode(), *i = NULL was
already done but this adds a test for that case too.

15 months agoTests: test_index: Test lzma_index_buffer_encode() with empty output buf
Lasse Collin [Sat, 27 Apr 2024 12:01:25 +0000 (15:01 +0300)] 
Tests: test_index: Test lzma_index_buffer_encode() with empty output buf

15 months agoTests: test_index: Replace if-statements with tuktest assertions
Lasse Collin [Sat, 27 Apr 2024 11:59:55 +0000 (14:59 +0300)] 
Tests: test_index: Replace if-statements with tuktest assertions

15 months agoTests: test_index: Make it clear that my_alloc() has no integer overflows
Lasse Collin [Sat, 27 Apr 2024 11:56:16 +0000 (14:56 +0300)] 
Tests: test_index: Make it clear that my_alloc() has no integer overflows

liblzma guarantees that the product of the allocation size arguments
will fit in size_t.

Putting the pre-increment in the if-statement was clearly wrong
although in practice it didn't matter here as the function is
called only a couple of times.

15 months agoTests: test_index: Verify also iter.block.number_in_stream
Lasse Collin [Sat, 27 Apr 2024 11:51:52 +0000 (14:51 +0300)] 
Tests: test_index: Verify also iter.block.number_in_stream

15 months agoTests: test_index: Check cases that aren't a multiple of 4 bytes
Lasse Collin [Sat, 27 Apr 2024 11:51:06 +0000 (14:51 +0300)] 
Tests: test_index: Check cases that aren't a multiple of 4 bytes

15 months agoTests: test_index: Edit comments and white space
Lasse Collin [Sat, 27 Apr 2024 11:40:25 +0000 (14:40 +0300)] 
Tests: test_index: Edit comments and white space

15 months agoliblzma: index_decoder: Fix missing initializations on LZMA_PROG_ERROR
Lasse Collin [Sat, 27 Apr 2024 11:33:38 +0000 (14:33 +0300)] 
liblzma: index_decoder: Fix missing initializations on LZMA_PROG_ERROR

If the arguments to lzma_index_decoder() or lzma_index_buffer_decode()
were such that LZMA_PROG_ERROR was returned, the lzma_index **i
argument wasn't touched even though the API docs say that *i = NULL
is done if an error occurs. This obviously won't be done even now
if i == NULL but otherwise it is best to do it due to the wording
in the API docs.

In practice this matters very little: The problem can occur only
if the functions are called with invalid arguments, that is,
the calling application must already have a bug.

15 months agoCMake: Bump maximum policy version to 3.29
Lasse Collin [Fri, 26 Apr 2024 15:25:18 +0000 (18:25 +0300)] 
CMake: Bump maximum policy version to 3.29

15 months agoci: add NetBSD
Sam James [Sat, 13 Apr 2024 21:30:44 +0000 (22:30 +0100)] 
ci: add NetBSD

15 months agoci: add FreeBSD
Sam James [Sat, 13 Apr 2024 22:49:26 +0000 (23:49 +0100)] 
ci: add FreeBSD

15 months agoci: add OpenBSD
Sam James [Sat, 13 Apr 2024 22:16:08 +0000 (23:16 +0100)] 
ci: add OpenBSD

15 months agoliblzma: outqueue: add header guard
Sam James [Mon, 15 Apr 2024 04:53:01 +0000 (05:53 +0100)] 
liblzma: outqueue: add header guard

Reported by github's codeql.

15 months agoliblzma: easy_preset: add header guard
Sam James [Mon, 15 Apr 2024 04:53:56 +0000 (05:53 +0100)] 
liblzma: easy_preset: add header guard

Reported by github's codeql.

15 months agotuklib_integer: Rename bswapXX to byteswapXX
Lasse Collin [Thu, 25 Apr 2024 11:00:57 +0000 (14:00 +0300)] 
tuklib_integer: Rename bswapXX to byteswapXX

The __builtin_bswapXX from GCC and Clang are preferred when
they are available. This can allow compilers to emit the x86 MOVBE
instruction instead of doing a load + byteswap as two instructions
(which would happen if the byteswapping is done in inline asm).

bswap16, bswap32, and bswap64 exist in system headers on *BSDs
and Darwin. #defining bswap16 on NetBSD results in a warning about
macro redefinition. It's safest to avoid this namespace conflict
completely.

No OS supported by tuklib_integer.h uses byteswapXX names and
a web search doesn't immediately find any obvious danger of
namespace conflicts. So let's try these still-pretty-short names
for the macros.

Thanks to Sam James for pointing out the compiler warning on
NetBSD 10.0.

15 months agoliblzma: API doc cleanups
Lasse Collin [Tue, 23 Apr 2024 22:20:26 +0000 (01:20 +0300)] 
liblzma: API doc cleanups

15 months agoTests: test_filter_str: Add a few assertions
Lasse Collin [Tue, 23 Apr 2024 13:35:33 +0000 (16:35 +0300)] 
Tests: test_filter_str: Add a few assertions

15 months agoTests: test_filter_str: Move one assertion and add a comment
Lasse Collin [Tue, 23 Apr 2024 13:35:08 +0000 (16:35 +0300)] 
Tests: test_filter_str: Move one assertion and add a comment

15 months agoTests: test_filter_str: Tweak comments and white space
Lasse Collin [Tue, 23 Apr 2024 13:26:06 +0000 (16:26 +0300)] 
Tests: test_filter_str: Tweak comments and white space

15 months agoTests: test_filter_str: Add missing RISC-V case
Lasse Collin [Tue, 23 Apr 2024 13:25:22 +0000 (16:25 +0300)] 
Tests: test_filter_str: Add missing RISC-V case

Fixes: 89ea1a22f4ed3685b053b7260bc5acf6c75d1664
15 months agoTests: test_filter_str: Test *error_pos more thoroughly
Lasse Collin [Mon, 22 Apr 2024 19:23:32 +0000 (22:23 +0300)] 
Tests: test_filter_str: Test *error_pos more thoroughly

15 months agoliblzma: lzma_str_to_filters: Set *error_pos on all errors
Lasse Collin [Mon, 22 Apr 2024 18:54:39 +0000 (21:54 +0300)] 
liblzma: lzma_str_to_filters: Set *error_pos on all errors

The API docs clearly say that if error_pos isn't NULL then *error
is always set on any error. However, it wasn't touched if str == NULL
or filters == NULL or unsupported flags were specified.

Fixes: cedeeca2ea6ada5b0411b2ae10d7a859e837f203
15 months agoliblzma: Clean up white space
Lasse Collin [Mon, 22 Apr 2024 17:31:25 +0000 (20:31 +0300)] 
liblzma: Clean up white space

15 months agoTests: test_filter_flags: Edit comments and style
Lasse Collin [Mon, 22 Apr 2024 15:35:19 +0000 (18:35 +0300)] 
Tests: test_filter_flags: Edit comments and style

15 months agoTests: Fix C99/C11 compatibility when features are disabled
Lasse Collin [Mon, 22 Apr 2024 13:39:44 +0000 (16:39 +0300)] 
Tests: Fix C99/C11 compatibility when features are disabled

The array could become empty and then the initializer would be
simply {} which is allowed only in GNU-C and C23.

15 months agoDOS: Omit useless defines from config.h
Lasse Collin [Sun, 21 Apr 2024 17:32:16 +0000 (20:32 +0300)] 
DOS: Omit useless defines from config.h

15 months agoBuild: Omit useless checks for fcntl.h, limits.h, and sys/time.h
Lasse Collin [Sun, 21 Apr 2024 17:27:50 +0000 (20:27 +0300)] 
Build: Omit useless checks for fcntl.h, limits.h, and sys/time.h

15 months agoliblzma: Silence a warning from Coverity static analysis
Lasse Collin [Fri, 19 Apr 2024 19:04:21 +0000 (22:04 +0300)] 
liblzma: Silence a warning from Coverity static analysis

It is logical why it cannot know for sure that the value has
to be at most 4 if it is less than 16.

The x86 filter is based on a very old LZMA SDK version. Newer
ones have quite a different implementation for the same filter.

Thanks to Sam James.

15 months agoUpdate .gitignore
Lasse Collin [Fri, 19 Apr 2024 20:18:19 +0000 (23:18 +0300)] 
Update .gitignore

15 months agoTests: test_lzip_decoder: Tweak coding style and comments
Lasse Collin [Fri, 19 Apr 2024 17:53:24 +0000 (20:53 +0300)] 
Tests: test_lzip_decoder: Tweak coding style and comments

15 months agoTests: test_lzip_decoder: Remove redundant initializations
Lasse Collin [Fri, 19 Apr 2024 17:51:36 +0000 (20:51 +0300)] 
Tests: test_lzip_decoder: Remove redundant initializations

15 months agoTests: test_lzip_decoder: Remove unneeded tuktest_malloc() calls
Lasse Collin [Fri, 19 Apr 2024 17:47:24 +0000 (20:47 +0300)] 
Tests: test_lzip_decoder: Remove unneeded tuktest_malloc() calls

16 months agoxz: Fix white space error.
Lasse Collin [Mon, 15 Apr 2024 17:35:07 +0000 (20:35 +0300)] 
xz: Fix white space error.

Thanks to xx on #tukaani.

16 months agoxz: add missing noreturn for message_filters_help
Sam James [Thu, 11 Apr 2024 22:01:44 +0000 (23:01 +0100)] 
xz: add missing noreturn for message_filters_help

Fixes: a165d7df1964121eb9df715e6f836a31c865beef
16 months agoxz: signals: suppress -Wsign-conversion on macOS
Sam James [Thu, 11 Apr 2024 18:34:04 +0000 (19:34 +0100)] 
xz: signals: suppress -Wsign-conversion on macOS

On macOS, we get:
```
signals.c: In function 'signals_init':
signals.c:76:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   76 |                 sigaddset(&hooked_signals, sigs[i]);
      |                 ^~~~~~~~~
signals.c:81:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   81 |                 sigaddset(&hooked_signals, message_progress_sigs[i]);
      |                 ^~~~~~~~~
signals.c:86:9: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   86 |         sigaddset(&hooked_signals, SIGTSTP);
      |         ^~~~~~~~~
```

We use `int` for `hooked_signals` but we can't just cast to whatever
`sigset_t` is because `sigset_t` is an opaque type. It's an unsigned int
on macOS. On macOS, `sigaddset` is implemented as a macro.

Just suppress -Wsign-conversion for `signals_init` for macOS given
there's no real nice way of fixing this.

16 months agoTests: test_microlzma: Add a "FIXME?" about LZMA_FINISH handling
Lasse Collin [Sat, 13 Apr 2024 19:19:40 +0000 (22:19 +0300)] 
Tests: test_microlzma: Add a "FIXME?" about LZMA_FINISH handling

16 months agoTests: test_microlzma: Tweak comments, coding style, and minor details
Lasse Collin [Sat, 13 Apr 2024 15:05:31 +0000 (18:05 +0300)] 
Tests: test_microlzma: Tweak comments, coding style, and minor details

A few lines were reordered, a few ARRAY_SIZE were changed to sizeof,
and a few uint32_t were changed to size_t. No real functional changes
were intended.

16 months agoCI: Use only the active CPUs on macOS 108/head
Ryan Carsten Schmidt [Sat, 13 Apr 2024 00:31:13 +0000 (19:31 -0500)] 
CI: Use only the active CPUs on macOS

hw.ncpu counts all CPUs including inactive ones. hw.activecpu counts
only the active CPUs.

16 months agoci: rename ci_build.sh -> ci_build.bash
Sam James [Wed, 10 Apr 2024 17:33:55 +0000 (18:33 +0100)] 
ci: rename ci_build.sh -> ci_build.bash

We discussed the name and it's less cognitive load to just call it '.bash'
so you don't have an immediate question about if bashisms are OK.

16 months agoci: build in parallel by default
Sam James [Wed, 10 Apr 2024 16:42:23 +0000 (17:42 +0100)] 
ci: build in parallel by default

16 months agoci: default to -O2
Sam James [Wed, 10 Apr 2024 14:41:08 +0000 (15:41 +0100)] 
ci: default to -O2

We need this for when we're passing sanitizer flags or -gdwarf-4 for Clang
with Valgrind. Just always start with -O2 if CFLAGS isn't set in the
environment and append what was passed on the command line.

16 months agoci: make automake's test runner verbose on failures
Sam James [Wed, 10 Apr 2024 14:17:47 +0000 (15:17 +0100)] 
ci: make automake's test runner verbose on failures

This is a lot easier to work with than the save-logs thing the action
tries to do...

16 months agoci: make UBSAN abort on errors
Sam James [Wed, 10 Apr 2024 11:38:51 +0000 (12:38 +0100)] 
ci: make UBSAN abort on errors

Unfortunately, UBSAN doesn't do this by default. See also the change
I made in Meson for this in October [0].

[0] https://github.com/mesonbuild/meson/commit/7b7d2e060b447de9c2642848847370a58711ac1c

16 months agoci: test Valgrind
Sam James [Wed, 10 Apr 2024 10:43:10 +0000 (11:43 +0100)] 
ci: test Valgrind

Using `--trace-children=yes` has a trade-off here, as it makes
`test_scripts.sh` pretty slow when calling various non-xz utilities.

But I also feel like it's not useless to have Valgrind used there and it's
not easy to exclude Valgrind just for that one test...

I did consider using AX_VALGRIND_CHECK [0][1] but I couldn't get it working
immediately with some conditionally-built tests and I wondered if it was
worth spending time on at least while we're debating xz's future build
system situation.

[0] https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html
[1] https://tecnocode.co.uk/2014/12/23/automatically-valgrinding-code-with-ax_valgrind_check/

16 months agoliblzma: CRC: Simplify table omission macros
Lasse Collin [Wed, 10 Apr 2024 20:20:02 +0000 (23:20 +0300)] 
liblzma: CRC: Simplify table omission macros

A macro is useful to prevent a single #if directive from
getting too ugly but only one macro is needed for all archs.

16 months agoliblzma: ARM64 CRC: Fix omission of CRC32 table
Lasse Collin [Wed, 10 Apr 2024 20:09:40 +0000 (23:09 +0300)] 
liblzma: ARM64 CRC: Fix omission of CRC32 table

The macro name had an odd typo so the table wasn't omitted
when it should have.

Fixes: 1940f0ec28f08c0ac72c1413d9706fb82eabe6ad
16 months agoBuild: If ARM64 feature detection func is found, stop looking for others
Lasse Collin [Wed, 10 Apr 2024 19:21:51 +0000 (22:21 +0300)] 
Build: If ARM64 feature detection func is found, stop looking for others

This can speed up configure a tiny bit.

Fixes: c5f6d79cc9515a7f22d7ea4860c6cc394b295732
16 months agoliblzma: ARM64 CRC32: Change style of the macOS code to match FreeBSD
Lasse Collin [Wed, 10 Apr 2024 19:04:27 +0000 (22:04 +0300)] 
liblzma: ARM64 CRC32: Change style of the macOS code to match FreeBSD

I didn't test this but it shouldn't change any functionality.

Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
16 months agoliblzma: ARM64 CRC32: Add error checking to FreeBSD-specific code
Lasse Collin [Wed, 10 Apr 2024 18:59:27 +0000 (21:59 +0300)] 
liblzma: ARM64 CRC32: Add error checking to FreeBSD-specific code

Also add parenthesis to the return statement.

I didn't test this.

Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
16 months agoliblzma: ARM64 CRC32: Use negation instead of subtracting from 8
Lasse Collin [Wed, 10 Apr 2024 18:56:33 +0000 (21:56 +0300)] 
liblzma: ARM64 CRC32: Use negation instead of subtracting from 8

Subtracting from 0 is negation, this just keeps warnings away.

Fixes: 761f5b69a4c778c8bcb09279b845b07c28790575
16 months agoliblzma: ARM64 CRC32: Tweak coding style and comments
Lasse Collin [Wed, 10 Apr 2024 18:55:10 +0000 (21:55 +0300)] 
liblzma: ARM64 CRC32: Tweak coding style and comments

16 months agoUpdate SECURITY.md.
Lasse Collin [Tue, 9 Apr 2024 18:55:01 +0000 (21:55 +0300)] 
Update SECURITY.md.

16 months agoCI: Remove ifunc support.
Lasse Collin [Tue, 9 Apr 2024 14:47:01 +0000 (17:47 +0300)] 
CI: Remove ifunc support.

16 months agoliblzma: Remove ifunc support.
Lasse Collin [Tue, 9 Apr 2024 14:43:16 +0000 (17:43 +0300)] 
liblzma: Remove ifunc support.

This is *NOT* done for security reasons even though the backdoor
relied on the ifunc code. Instead, the reason is that in this
project ifunc provides little benefits but it's quite a bit of
extra code to support it. The only case where ifunc *might* matter
for performance is if the CRC functions are used directly by an
application. In normal compression use it's completely irrelevant.

16 months agotests/files/README: Update the main heading.
Lasse Collin [Mon, 8 Apr 2024 19:04:41 +0000 (22:04 +0300)] 
tests/files/README: Update the main heading.

16 months agotests/files/README: Explain how to recreate the ARM64 test files.
Lasse Collin [Mon, 8 Apr 2024 19:02:45 +0000 (22:02 +0300)] 
tests/files/README: Explain how to recreate the ARM64 test files.

16 months agodebug: Add generator for the ARM64 test file data.
Lasse Collin [Mon, 8 Apr 2024 18:51:55 +0000 (21:51 +0300)] 
debug: Add generator for the ARM64 test file data.

16 months agoxz man page: Use .ft CR instead of CW to silence warnings from groff.
Lasse Collin [Mon, 8 Apr 2024 18:19:38 +0000 (21:19 +0300)] 
xz man page: Use .ft CR instead of CW to silence warnings from groff.

16 months agoFix NEWS for 5.6.0 and 5.6.1.
Lasse Collin [Mon, 8 Apr 2024 16:28:35 +0000 (19:28 +0300)] 
Fix NEWS for 5.6.0 and 5.6.1.

16 months agoRemove the XZ logo.
Lasse Collin [Mon, 8 Apr 2024 16:22:26 +0000 (19:22 +0300)] 
Remove the XZ logo.

16 months agoUpdate maintainer and author info.
Lasse Collin [Mon, 8 Apr 2024 15:27:39 +0000 (18:27 +0300)] 
Update maintainer and author info.

The other maintainer suddenly disappeared.

16 months agoDocs: Update .xz file format specification to 1.2.1.
Lasse Collin [Mon, 8 Apr 2024 15:05:32 +0000 (18:05 +0300)] 
Docs: Update .xz file format specification to 1.2.1.

This only reverts the XZ URL changes.

16 months agoUpdate website URLs back to tukaani.org.
Lasse Collin [Mon, 8 Apr 2024 14:33:56 +0000 (17:33 +0300)] 
Update website URLs back to tukaani.org.

The XZ projects were moved back to their original URLs.

16 months agoxzdec: Tweak coding style and comments.
Lasse Collin [Mon, 8 Apr 2024 14:07:08 +0000 (17:07 +0300)] 
xzdec: Tweak coding style and comments.

16 months agotests/ossfuzz: Tiny fix to a comment.
Lasse Collin [Mon, 8 Apr 2024 12:53:46 +0000 (15:53 +0300)] 
tests/ossfuzz: Tiny fix to a comment.

16 months agoUpdate THANKS.
Lasse Collin [Tue, 9 Apr 2024 15:22:16 +0000 (18:22 +0300)] 
Update THANKS.

16 months agoRemove the backdoor found in 5.6.0 and 5.6.1 (CVE-2024-3094).
Lasse Collin [Mon, 8 Apr 2024 12:32:58 +0000 (15:32 +0300)] 
Remove the backdoor found in 5.6.0 and 5.6.1 (CVE-2024-3094).

While the backdoor was inactive (and thus harmless) without inserting
a small trigger code into the build system when the source package was
created, it's good to remove this anyway:

  - The executable payloads were embedded as binary blobs in
    the test files. This was a blatant violation of the
    Debian Free Software Guidelines.

  - On machines that see lots bots poking at the SSH port, the backdoor
    noticeably increased CPU load, resulting in degraded user experience
    and thus overwhelmingly negative user feedback.

  - The maintainer who added the backdoor has disappeared.

  - Backdoors are bad for security.

This reverts the following without making any other changes:

6e636819 Tests: Update two test files.
a3a29bbd Tests: Test --single-stream can decompress bad-3-corrupt_lzma2.xz.
0b4ccc91 Tests: Update RISC-V test files.
8c9b8b20 liblzma: Fix typos in crc32_fast.c and crc64_fast.c.
82ecc538 liblzma: Fix false Valgrind error report with GCC.
cf44e4b7 Tests: Add a few test files.
3060e107 Tests: Use smaller dictionary size in RISC-V test files.
e2870db5 Tests: Add two RISC-V Filter test files.

The RISC-V test files also have real content that tests the filter
but the real content would fit into much smaller files. A generator
program would need to be available as well.

Thanks to Andres Freund for finding and reporting it and making
it public quickly so others could act without a delay.
See: https://www.openwall.com/lists/oss-security/2024/03/29/4

16 months agoCMake: Fix sabotaged Landlock sandbox check.
Lasse Collin [Sat, 30 Mar 2024 12:36:28 +0000 (14:36 +0200)] 
CMake: Fix sabotaged Landlock sandbox check.

It never enabled it.

16 months agoDocs: Simplify SECURITY.md.
Jia Tan [Mon, 25 Mar 2024 17:50:02 +0000 (01:50 +0800)] 
Docs: Simplify SECURITY.md.

16 months agoliblzma: memcmplen.h: Add a comment why subtraction is used.
Lasse Collin [Fri, 22 Mar 2024 15:46:30 +0000 (17:46 +0200)] 
liblzma: memcmplen.h: Add a comment why subtraction is used.

17 months agoINSTALL: Document arguments of --enable-symbol-versions.
Lasse Collin [Fri, 15 Mar 2024 15:43:39 +0000 (17:43 +0200)] 
INSTALL: Document arguments of --enable-symbol-versions.

17 months agoBuild: Use only the generic symbol versioning with NVIDIA HPC Compiler.
Lasse Collin [Fri, 15 Mar 2024 15:15:50 +0000 (17:15 +0200)] 
Build: Use only the generic symbol versioning with NVIDIA HPC Compiler.

This does the previous commit with CMake.

AC_EGREP_CPP uses AC_REQUIRE so the outermost if-commands must
be changed to AS_IF to ensure that things wont break some day.
See 5a5bd7f871818029d5ccbe189f087f591258c294.

17 months agoCMake: Use only the generic symbol versioning with NVIDIA HPC Compiler.
Lasse Collin [Fri, 15 Mar 2024 14:36:35 +0000 (16:36 +0200)] 
CMake: Use only the generic symbol versioning with NVIDIA HPC Compiler.

It doesn't support the __symver__ attribute or __asm__(".symver ...").
The generic symbol versioning can still be used since it only needs
linker support.

17 months agoUpdate THANKS.
Lasse Collin [Wed, 13 Mar 2024 19:38:24 +0000 (21:38 +0200)] 
Update THANKS.

17 months agoliblzma: Minor comment edits.
Lasse Collin [Wed, 13 Mar 2024 19:30:18 +0000 (21:30 +0200)] 
liblzma: Minor comment edits.

17 months agoliblzma: Fix building with NVHPC (NVIDIA HPC SDK).
Sergey Kosukhin [Wed, 13 Mar 2024 12:07:13 +0000 (13:07 +0100)] 
liblzma: Fix building with NVHPC (NVIDIA HPC SDK).

NVHPC compiler has several issues that make it impossible to
build liblzma:
  - the compiler cannot handle unions that contain pointers that
    are not the first members;
  - the compiler cannot handle the assembler code in range_decoder.h
    (LZMA_RANGE_DECODER_CONFIG has to be set to zero);
  - the compiler fails to produce valid code for delta_decode if the
    vectorization is enabled, which results in failed tests.

This introduces NVHPC-specific workarounds that address the issues.

17 months agoCMake: Disable symbol versioning on non-glibc Linux.
Lasse Collin [Wed, 13 Mar 2024 19:17:10 +0000 (21:17 +0200)] 
CMake: Disable symbol versioning on non-glibc Linux.

This better matches what configure.ac does. For example, musl has
only basic symbol versioning support:

https://wiki.musl-libc.org/functional-differences-from-glibc.html#Symbol_versioning

configure.ac tries to enable symbol versioning only with glibc
so now CMake does the same.

17 months agoCMake: Make symbol versioning configurable.
Lasse Collin [Wed, 13 Mar 2024 18:32:46 +0000 (20:32 +0200)] 
CMake: Make symbol versioning configurable.

17 months agoBuild: Style tweaks to configure.ac.
Lasse Collin [Wed, 13 Mar 2024 17:47:36 +0000 (19:47 +0200)] 
Build: Style tweaks to configure.ac.

The AC_MSG_ERROR line is overlong anyway as are a few other
AC_MSG_ERROR lines already.

17 months agoBuild: Let the users override the symbol versioning variant.
Sergey Kosukhin [Tue, 12 Mar 2024 19:03:49 +0000 (20:03 +0100)] 
Build: Let the users override the symbol versioning variant.

There are cases when the users want to decide themselves whether
they want to have the generic (even on GNU/Linux) or the linux
(even if we do not recommend that) symbol versioning variant.
The former might be needed to circumvent compiler issues (i.e.
the compiler does not support all features that are required
for the linux versioning), the latter might help in overriding
the assumptions made in the configure script.

17 months agoAdd NEWS for 5.6.1
Jia Tan [Sat, 9 Mar 2024 03:27:27 +0000 (11:27 +0800)] 
Add NEWS for 5.6.1

17 months agoTranslations: Add missing --riscv option to man page translations.
Jia Tan [Sat, 9 Mar 2024 02:43:20 +0000 (10:43 +0800)] 
Translations: Add missing --riscv option to man page translations.

17 months agoTests: Update two test files.
Jia Tan [Sat, 9 Mar 2024 02:18:29 +0000 (10:18 +0800)] 
Tests: Update two test files.

The original files were generated with random local to my machine.
To better reproduce these files in the future, a constant seed was used
to recreate these files.

17 months agoTests: Test --single-stream can decompress bad-3-corrupt_lzma2.xz.
Jia Tan [Sat, 9 Mar 2024 02:08:32 +0000 (10:08 +0800)] 
Tests: Test --single-stream can decompress bad-3-corrupt_lzma2.xz.

The first stream in this file is valid, so this tests that xz properly
stops after decompressing it.

17 months agoTests: Update RISC-V test files.
Jia Tan [Sat, 9 Mar 2024 02:05:32 +0000 (10:05 +0800)] 
Tests: Update RISC-V test files.

This increases code coverage and tests for possible shifting bugs.

17 months agoliblzma: Fix typos in crc32_fast.c and crc64_fast.c.
Jia Tan [Sat, 9 Mar 2024 01:52:32 +0000 (09:52 +0800)] 
liblzma: Fix typos in crc32_fast.c and crc64_fast.c.

17 months agoTests: Replace HAVE_MICROLZMA usage in CMake and Autotools builds.
Jia Tan [Sat, 9 Mar 2024 01:49:55 +0000 (09:49 +0800)] 
Tests: Replace HAVE_MICROLZMA usage in CMake and Autotools builds.

This reverts commit adaacafde6661496ca2814b1e94a3ba5186428cb.

17 months agoliblzma: Fix false Valgrind error report with GCC.
Jia Tan [Sat, 9 Mar 2024 01:20:57 +0000 (09:20 +0800)] 
liblzma: Fix false Valgrind error report with GCC.

With GCC and a certain combination of flags, Valgrind will falsely
trigger an invalid write. This appears to be due to the omission of
instructions to properly save, set up, and restore the frame pointer.

The IFUNC resolver is a leaf function since it only calls a function
that is inlined. So sometimes GCC omits the frame pointer instructions
in the resolver unless this optimization is explictly disabled.

This fixes https://bugzilla.redhat.com/show_bug.cgi?id=2267598.

17 months agoliblzma: Fix a typo in a comment in the RISC-V filter.
Lasse Collin [Tue, 5 Mar 2024 21:21:26 +0000 (23:21 +0200)] 
liblzma: Fix a typo in a comment in the RISC-V filter.

17 months agoliblzma: Use attribute no_profile_instrument_function with ifunc.
Jia Tan [Mon, 4 Mar 2024 16:34:46 +0000 (00:34 +0800)] 
liblzma: Use attribute no_profile_instrument_function with ifunc.

Thanks to Sam James for determining this was the attribute needed to
workaround the GCC bug and for his version of the patch in Gentoo.

17 months agoBuild: Require attribute no_profile_instrument_function for ifunc usage.
Jia Tan [Mon, 4 Mar 2024 16:27:31 +0000 (00:27 +0800)] 
Build: Require attribute no_profile_instrument_function for ifunc usage.

Using __attribute__((__no_profile_instrument_function__)) on the ifunc
resolver works around a bug in GCC -fprofile-generate:
it adds profiling code even to ifunc resolvers which can make
the ifunc resolver crash at program startup. This attribute
was not introduced until GCC 7 and Clang 13, so ifunc won't
be used with prior versions of these compilers.

This bug was brought to our attention by:

    https://bugs.gentoo.org/925415

And was reported to upstream GCC by:

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11411

17 months agoliblzma: Fix a comment in the RISC-V filter.
Lasse Collin [Mon, 4 Mar 2024 17:23:18 +0000 (19:23 +0200)] 
liblzma: Fix a comment in the RISC-V filter.