Repository navigation
PJA 0.6.3
Fixes from fuzzing the command and the 7-Zip plugin. None of them lost data: PJA verifies everything before it writes it.
- Repairing a damaged JPEG could take minutes. The filler for a scan cut short went back and forth between "data after the scan" and "scan cut short", decoding the whole file each time (104 s for a 91 KB file). Now well under a second; a cut progressive scan with a restart every few blocks takes seconds at most. The same files are repaired as with 0.6.2.
- A JPEG-LS without its EOI was taken and then failed verification (nothing written). It is now refused when parsed and stored as it is.
- The 7-Zip filter went quadratic on a JPEG cut short in a solid block followed by text (32 MB: 22.8 s, up to 512 MB of memory). Now 0.17 s and 32 MB at most.
- libpja: thread counts are 1 to 64 in every export, and a thread pool that fails half-built stops the threads it started. The Windows heap refuses a size that would overflow its header.
- x86 without SSE2. The 32-bit builds' C now targets any 686 (
-march=i686): PJA x86 runs on a Pentium III or Athlon XP again. The same bytes; the SSE4.1 and AVX2 paths still go by cpuid. - The same bytes. The format, the streams and the zpaq-std plugin's codecs are 0.6.2's: 1,207 files of every test set give the same streams. Checked: 212,168 damaged
.pjaand 25,854 damaged.7zarchives with no crash, and on Windows 10 with 7-Zip 25.01, the x86 library out of memory (an error, not a crash) and 7zFM (no errors).
Downloads
| platform | the pja command |
the zpaq-std plugin | libpja (C library, 7-Zip plugin) |
|---|---|---|---|
| Linux x86-64 | pja-0.6.3-linux-x86_64.tar.gz |
pja-0.6.3-zpaqstd-plugin-linux-x86_64.tar.gz |
pja-0.6.3-lib-linux-x86_64.tar.gz |
| Linux x86 (32-bit) | pja-0.6.3-linux-x86.tar.gz |
pja-0.6.3-zpaqstd-plugin-linux-x86.tar.gz |
pja-0.6.3-lib-linux-x86.tar.gz |
| Linux arm64 | pja-0.6.3-linux-arm64.tar.gz |
pja-0.6.3-zpaqstd-plugin-linux-arm64.tar.gz |
pja-0.6.3-lib-linux-arm64.tar.gz |
| macOS arm64 | pja-0.6.3-macos-arm64.tar.gz |
pja-0.6.3-zpaqstd-plugin-macos-arm64.tar.gz |
pja-0.6.3-lib-macos-arm64.tar.gz |
| Windows x64 (7 and later) | pja-0.6.3-windows-x64.zip |
pja-0.6.3-zpaqstd-plugin-windows-x64.zip |
pja-0.6.3-lib-windows-x64.zip |
| Windows x86 (XP and later) | pja-0.6.3-windows-x86.zip |
pja-0.6.3-zpaqstd-plugin-windows-x86.zip |
pja-0.6.3-lib-windows-x86.zip |
pja-0.6.3-zpaqstd.tar.gz holds the plugin's sources as zpaq-std vendors them, with VENDOR.md. CI builds and checks every binary on its own platform (.github/workflows/release.yml); libpja is checked with its C test and, on Linux x86-64, through a real 7-Zip. SHA256SUMS has the checksums. The Linux builds need glibc 2.34 or later. The macOS ones are not signed: run xattr -d com.apple.quarantine after unpacking.