From 9697c6321077cfca6504cb8bd67b7843bb8c044d Mon Sep 17 00:00:00 2001 From: Edouard Vanbelle Date: Fri, 26 Jun 2026 18:56:52 +0200 Subject: [PATCH] =?UTF-8?q?deps(security):=20bump=20pdf-extract=20?= =?UTF-8?q?=E2=86=92=200.12.0=20to=20pull=20lopdf=200.42.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lopdf <0.42.0 has an unbounded-recursion stack overflow on deeply nested PDF objects (advisory 2026-06-21). The vector through OxiCloud is the search-index text extractor — anyone who can upload a file can ship a malicious PDF, and the existing catch_unwind in text_extractor::extract_pdf does not save us: a stack overflow aborts the process, it is not a panic. pdf-extract 0.12.0 requires lopdf ^0.42 which adds the depth bound; the only consumer call (`extract_text_from_mem`) is API-compatible, no source changes needed. --- Cargo.lock | 65 ++++++++++++++++++++++++++++++++---------------------- Cargo.toml | 2 +- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08684cc4..a5f9438c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1152,12 +1152,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - [[package]] name = "bytemuck" version = "1.25.0" @@ -1322,9 +1316,9 @@ dependencies = [ [[package]] name = "cff-parser" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f5b6e9141c036f3ff4ce7b2f7e432b0f00dee416ddcd4f17741d189ddc2e9d" +checksum = "c5810ca1a2b5870df2aab1c03e11c40c361ba51d6e3e361e56310f1cb3b4e087" [[package]] name = "cfg-if" @@ -1338,6 +1332,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" version = "0.4.45" @@ -2711,10 +2716,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -3680,9 +3688,9 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lopdf" -version = "0.38.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7184fdea2bc3cd272a1acec4030c321a8f9875e877b3f92a53f2f6033fdc289" +checksum = "25aab26d99567469098e64a02f42679f8965c6401263eefa31d8f2dcc37a221c" dependencies = [ "aes", "bitflags", @@ -3690,14 +3698,13 @@ dependencies = [ "ecb", "encoding_rs", "flate2", - "getrandom 0.3.4", + "getrandom 0.4.2", "indexmap", "itoa", "log", "md-5 0.10.6", "nom 8.0.0", - "nom_locate", - "rand 0.9.4", + "rand 0.10.1", "rangemap", "sha2 0.10.9", "stringprep", @@ -4038,17 +4045,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "nom_locate" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b577e2d69827c4740cba2b52efaad1c4cc7c73042860b199710b3575c68438d" -dependencies = [ - "bytecount", - "memchr", - "nom 8.0.0", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -4372,9 +4368,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pdf-extract" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28ba1758a3d3f361459645780e09570b573fc3c82637449e9963174c813a98" +checksum = "417e8fdc940f1d5bc62c5f89864c3a2255f74f69aa353c98509213d67df61e73" dependencies = [ "adobe-cmap-parser", "cff-parser", @@ -4870,6 +4866,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +dependencies = [ + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -4927,6 +4934,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_hc" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index 26ad217b..ac29094c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,7 +87,7 @@ accept-language = "3.1.0" askama = "0.16.0" tantivy = "0.26.1" zip = { version = "8.6.0", default-features = false, features = ["deflate"] } -pdf-extract = "0.10.0" +pdf-extract = "0.12.0" nom-exif = "3.6.1" extism = { version = "1.30.0", optional = true } toml = { version = "1.1.2", optional = true }