mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-30 04:58:34 -06:00
The nightly fuzz job found a JBIG2 symbol dictionary that decoded for minutes: each bitmap side may be 65535, and up to 65535 symbols are decoded pixel by pixel. Vendored hayro-jbig2 0.3.0 with two bounds: at most 2^28 pixels per bitmap (also the page bitmap, halftone grid and grayscale image), and at most 2^26 symbol pixels per dictionary. The finding now finishes in about a second. Synthetic regression test (a 65535 x 65535 page and region behind a small /Width and /Height); the corpus sweep shows 0 regressions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# hayro-jbig2
|
|
|
|
[](https://crates.io/crates/hayro-jbig2)
|
|
[](https://docs.rs/hayro-jbig2)
|
|
|
|
A memory-safe, pure-Rust JBIG2 decoder.
|
|
|
|
`hayro-jbig2` decodes JBIG2 images as specified in ITU-T T.88 (also known as
|
|
ISO/IEC 14492). JBIG2 is a bi-level image compression standard commonly used
|
|
in PDF documents for compressing scanned text documents.
|
|
|
|
## Status
|
|
|
|
This crate is currently under development.
|
|
|
|
## Safety
|
|
By default, the crate has the `simd` feature enabled, which uses the
|
|
[`fearless_simd`](https://github.com/linebender/fearless_simd) crate to accelerate decoding of JBIG2 images with halftoning.
|
|
If you want to eliminate any usage of unsafe in this crate as well as its dependencies, you can simply disable this
|
|
feature and still get very good performance in the vast majority of cases. Unsafe code is forbidden
|
|
via a crate-level attribute.
|
|
|
|
## License
|
|
|
|
Licensed under either of
|
|
|
|
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
|
|
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
|
|
|
|
at your option.
|