Files
pdfcraft/vendor/hayro-interpret/Cargo.toml
Brandon Thomas 20842c72e3 Never crash: Type 1 font programs can't hang or overflow the stack (skrifa 0.47)
The nightly fuzz job found a Type 1 font that hung hayro: read-fonts 0.39
(through skrifa 0.42) looked ahead after every integer by parsing the next
token, which looked ahead again, recursing through a whole run of numbers.
A long run hung; 20,000 numbers overflowed the stack and aborted the
process. Upstream fixed the tokenizer; the vendored hayro-interpret now uses
skrifa 0.47 (read-fonts 0.44), with its one API change. The finding finishes
in 0.5 s. Synthetic regression test (it aborts with the old skrifa).
Corpus sweep: 0 regressions; text oracle unchanged (median F1 0.980, mean
0.866, every per-file score identical).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:47:39 -04:00

140 lines
2.9 KiB
TOML

# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.
[package]
edition = "2024"
rust-version = "1.92"
name = "hayro-interpret"
version = "0.7.0"
authors = ["Laurenz Stampfl <laurenz.stampfl@gmail.com>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A crate for interpreting PDF files."
readme = "README.md"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/LaurenzV/hayro"
resolver = "2"
[features]
default = [
"embed-fonts",
"embed-cmaps",
]
embed-cmaps = ["hayro-cmap/embed-cmaps"]
embed-fonts = []
logging = [
"dep:log",
"hayro-syntax/logging",
]
[lib]
name = "hayro_interpret"
path = "src/lib.rs"
[[example]]
name = "extract_html"
path = "examples/extract_html.rs"
[[example]]
name = "extract_images"
path = "examples/extract_images.rs"
[dependencies.bitflags]
version = "2.10"
[dependencies.hayro-cmap]
version = "0.1.0"
default-features = false
[dependencies.hayro-syntax]
version = "0.7.0"
features = [
"std",
"images",
"unsafe",
]
default-features = false
[dependencies.kurbo]
version = "0.13.0"
[dependencies.log]
version = "0.4"
optional = true
[dependencies.moxcms]
version = "0.8.1"
[dependencies.phf]
version = "0.13.1"
features = ["macros"]
default-features = false
[dependencies.rustc-hash]
version = "2"
[dependencies.siphasher]
version = "1"
[dependencies.skrifa]
version = "0.47.0"
[dependencies.smallvec]
version = "1"
[dependencies.yoke]
version = "0.8"
features = ["derive"]
[dev-dependencies.image]
version = "0.25"
features = ["png"]
default-features = false
[lints.clippy]
collection_is_never_read = "warn"
dbg_macro = "warn"
debug_assert_with_mut_call = "warn"
default_trait_access = "warn"
doc_markdown = "warn"
fn_to_numeric_cast_any = "warn"
infinite_loop = "warn"
large_stack_arrays = "warn"
mismatching_type_param_order = "warn"
negative_feature_names = "warn"
redundant_feature_names = "warn"
same_functions_in_if_condition = "warn"
semicolon_if_nothing_returned = "warn"
todo = "warn"
too_many_arguments = "allow"
unseparated_literal_suffix = "warn"
use_self = "warn"
wildcard_dependencies = "warn"
[lints.rust]
elided_lifetimes_in_paths = "warn"
keyword_idents_2024 = "forbid"
missing_docs = "warn"
non_ascii_idents = "forbid"
non_local_definitions = "forbid"
trivial_numeric_casts = "warn"
unnameable_types = "warn"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "forbid"
unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_macro_rules = "warn"
unused_qualifications = "warn"