CI/supply-chain: no cargo-deny / cargo-audit gate despite bundling SQLite + 8 C grammar crates #17
Labels
No labels
code-review
correctness
dos
performance
security
severity/high
severity/low
severity/medium
tech-debt
Kind/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
h-dv/code-index#17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: Medium · Category: Tech-debt / supply chain
CI (
.forgejo/workflows/ci.yml) runs fmt → clippy (-D warnings) → test, but has no advisory/CVE step. The riskiest (C-FFI) part of the tree is unguarded:libsqlite3-sys(SQLite compiled from source viarusqlite bundled) + 8 tree-sitter grammar crates (C parsers) +rmcp 1.5. No automated CVE/yank/license gate.Fix
cargo-denyCI job (advisories + bans + licenses); commitdeny.toml.Related low item
tree-sitter 0.22.6vs grammars0.21.x(php0.22.8). Compiles + all tests pass (ABI 14), so it works today, but the coupling is implicit/unpinned — a future grammar bump to a newer ABI would break at load time, not compile time. Tracked in the polish backlog.Filed from a deep multi-agent code review of the workspace (v0.5.7). Severity/category per the review; file:line refs were accurate at review time — verify against current
master.Fixed in
5bdd1ba(branchfix/ultradeep-review-findings).Reassessed on current master — confirmed no advisory step existed (
ci.yml= fmt → clippy → test, nodeny.toml). Added:deny.toml— advisories (RustSec DB,yanked = "deny"), licenses (the permissive set actually present in the lock: MIT / Apache-2.0 / Apache-2.0-WITH-LLVM-exception / BSD-2 / ISC / Unicode-3.0 / Zlib / CC0-1.0 / BSL-1.0), sources (crates.io only),bans.multiple-versions = "warn"(non-fatal).ci.yml— newdenyjob wired as fmt → {clippy, deny} → test, runningcargo deny check advisories bans licenses sources.The gate immediately earned its keep — it flagged two real upstream advisories, now remediated by a lockfile bump (no API changes):
anyhow1.0.102 → 1.0.103 (Error::downcast_mutborrow-rule UB)crossbeam-epoch0.9.18 → 0.9.20 (null-pointer deref inDisplay), viaignore/rayon-coreVerified locally:
cargo deny check→ advisories ok, bans ok, licenses ok, sources ok; full workspace suite green (624 tests).Note: the CI job builds cargo-deny from source (
cargo install cargo-deny --locked) since this repo doesn't useinstall-action; a cached binary could speed it up later if runner minutes matter.