Skip to content

Assertion failed self.table.is_full() || ... in weezl-0.1.10/src/decode.rs #441

@qarmin

Description

@qarmin
fn check_file(file_path: &str) {
    let Ok(content) = fs::read(file_path) else {
        return;
    };
    let cursor = Cursor::new(content);
    match Document::load_from(cursor) {
        Ok(mut document) => {
            let pages = document.get_pages();

            let mut doc_clone = document.clone();
            doc_clone.decompress();

            for (i, _) in pages.iter().enumerate() {
                let page_number = (i + 1) as u32;
                let _text = document.extract_text(&[page_number]);
            }

            let _ = document.save_to(&mut Cursor::new(Vec::new()));
        }
        Err(err) => {
            eprintln!("Error reading PDF contents: {}", err)
        }
    }
}
thread 'main' (2953674) panicked at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:909:17:
assertion failed: self.table.is_full() ||
        (self.code_buffer.code_size() == 2 && self.next_code == 4) ||
    self.code_buffer.max_code() - Code::from(self.is_tiff) >= self.next_code
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/69b76df90c7ea63b5350d1865f92902a0b27c9a2/library/std/src/panicking.rs:698:5
   1: core::panicking::panic_fmt
             at /rustc/69b76df90c7ea63b5350d1865f92902a0b27c9a2/library/core/src/panicking.rs:75:14
   2: core::panicking::panic
             at /rustc/69b76df90c7ea63b5350d1865f92902a0b27c9a2/library/core/src/panicking.rs:145:5
   3: <weezl::decode::DecodeState<C,CgC> as weezl::decode::Stateful>::advance
             at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:909:17
   4: weezl::decode::Decoder::decode_bytes
             at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:330:20
   5: weezl::decode::IntoStream<W>::decode_part::{{closure}}
             at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:503:34
   6: <core::iter::sources::repeat_with::RepeatWith<F> as core::iter::traits::iterator::Iterator>::try_fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/sources/repeat_with.rs:112:24
   7: <core::iter::adapters::scan::Scan<I,St,F> as core::iter::traits::iterator::Iterator>::try_fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/scan.rs:76:19
   8: <core::iter::adapters::fuse::Fuse<I> as core::iter::adapters::fuse::FuseImpl<I>>::try_fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/fuse.rs:317:24
   9: <core::iter::adapters::fuse::Fuse<I> as core::iter::traits::iterator::Iterator>::try_fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/fuse.rs:89:9
  10: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::try_fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/mod.rs:192:14
  11: <core::iter::adapters::GenericShunt<I,R> as core::iter::traits::iterator::Iterator>::fold
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/mod.rs:380:18
  12: core::iter::traits::iterator::Iterator::for_each
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:827:14
  13: core::unit::<impl core::iter::traits::collect::FromIterator<()> for ()>::from_iter
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/unit.rs:17:26
  14: core::iter::traits::iterator::Iterator::collect
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2027:9
  15: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:2141:51
  16: core::iter::adapters::try_process
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/mod.rs:160:17
  17: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:2141:9
  18: core::iter::traits::iterator::Iterator::collect
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2027:9
  19: weezl::decode::IntoStream<W>::decode_part
             at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:553:14
  20: weezl::decode::IntoStream<W>::decode_all
             at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/weezl-0.1.10/src/decode.rs:440:14
  21: lopdf::object::Stream::decompress_lzw_loop
             at /home/runner/.cargo/git/checkouts/lopdf-49bfd002b5e4fbb4/e4ee093/src/object.rs:722:55
  22: lopdf::object::Stream::decompress_lzw
             at /home/runner/.cargo/git/checkouts/lopdf-49bfd002b5e4fbb4/e4ee093/src/object.rs:715:22
  23: lopdf::object::Stream::decompressed_content
             at /home/runner/.cargo/git/checkouts/lopdf-49bfd002b5e4fbb4/e4ee093/src/object.rs:690:33
  24: lopdf::object::Stream::decompress
             at /home/runner/.cargo/git/checkouts/lopdf-49bfd002b5e4fbb4/e4ee093/src/object.rs:820:25
  25: lopdf::processor::<impl lopdf::document::Document>::decompress
             at /home/runner/.cargo/git/checkouts/lopdf-49bfd002b5e4fbb4/e4ee093/src/processor.rs:37:32
  26: lopdf::check_file
             at ./src/crates/lopdf/src/main.rs:37:23
  27: lopdf::main
             at ./src/crates/lopdf/src/main.rs:23:9
  28: core::ops::function::FnOnce::call_once
             at /home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

compressed.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions