Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ exclude = ["sqlite-forensic-fuzz"]
[advisories]
version = 2
yanked = "deny"
# Time-boxed ignore (added 2026-07; revisit each release). quick-xml <0.41 has
# two DoS advisories — RUSTSEC-2026-0194 (quadratic duplicate-attribute check)
# and RUSTSEC-2026-0195 (unbounded namespace-declaration allocation). Both are
# DoS-only (not RCE/memory-unsafety) and reach the tree ONLY through the
# dev-dependency `calamine 0.35.0`, which pins `quick-xml = "^0.39"` and cannot
# resolve to the fixed 0.41.0. calamine 0.35 is the newest release in our range,
# so no upgrade path exists yet. Drop both IDs once calamine widens its quick-xml
# requirement to >=0.41 (or a newer calamine we can adopt does).
ignore = ["RUSTSEC-2026-0194", "RUSTSEC-2026-0195"]

[licenses]
version = 2
Expand Down
9 changes: 8 additions & 1 deletion forensic/tests/audit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -282,9 +282,16 @@ fn real_engine_secure_delete_raises_the_fingerprint() {
return;
}

// `auto_vacuum=NONE` is load-bearing: a sqlite3 built with
// `SQLITE_DEFAULT_AUTOVACUUM=1` (e.g. the macOS CI runner's engine) reclaims
// the DELETE-freed pages and truncates the file, leaving freelist_count=0 and
// NO freed leaf pages — so the fingerprint has nothing to fire on and the
// oracle's premise fails through no fault of the detector. Forcing auto_vacuum
// off keeps the freed-leaf freelist on every conforming build (a no-op on the
// builds that already default to off), making the oracle host-independent.
// Enough rows that DELETE frees whole pages onto the freelist (in-page
// freeblocks alone would leave freelist_count=0 and exercise nothing).
let script = "PRAGMA page_size=4096; CREATE TABLE t(x TEXT);\n\
let script = "PRAGMA auto_vacuum=NONE; PRAGMA page_size=4096; CREATE TABLE t(x TEXT);\n\
WITH RECURSIVE c(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM c WHERE n<2000)\n\
INSERT INTO t SELECT 'row-'||n||'-'||hex(randomblob(40)) FROM c;\n\
DELETE FROM t WHERE rowid>200;";
Expand Down
Loading