1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# cargo-deny configuration -- https://embarkstudios.github.io/cargo-deny/
#
# Audits the whole dependency graph for:
# * advisories -- known vulnerabilities / unmaintained / yanked crates (RustSec)
# * licenses -- every crate must resolve to a license we allow
# * bans -- duplicate versions, banned crates
# * sources -- crates may only come from crates.io
#
# Run locally with:
# cargo install cargo-deny --locked (or: cargo binstall cargo-deny)
# cargo deny check
# Refresh the advisory database only:
# cargo deny fetch
[]
# Only audit the platforms we actually ship for. Without this, cargo-deny walks
# wasm/wasi/redox/android-only dependencies that are never built here, which
# produces license and duplicate-version noise for code we do not distribute.
= [
"x86_64-unknown-linux-musl",
"aarch64-unknown-linux-musl",
"aarch64-linux-android",
"x86_64-apple-darwin",
"aarch64-apple-darwin",
"x86_64-pc-windows-msvc",
]
# Audit every optional feature, not just the default ones.
= true
[]
= 1
# ----------------------------------------------------------------------------
# Advisories: vulnerabilities, unmaintained crates, yanked crates
# ----------------------------------------------------------------------------
[]
= ["https://github.com/rustsec/advisory-db"]
# Deny crates whose version was yanked from crates.io.
= "deny"
# "all" also reports unmaintained crates reached transitively. Kept at the
# strictest setting on purpose: the two known cases are ignored explicitly below
# rather than silenced as a class, so a *new* unmaintained crate still fails CI.
= "all"
# Every entry MUST carry a justification and be re-checked when its source
# dependency is bumped. Both entries below are unmaintained notices (not
# vulnerabilities) that come from sled 0.34 and have no upgrade path from here;
# they disappear when sled moves to 1.x or the high-score backend changes.
# For now just kept it, as the the 1;x is still beta
= [
{ = "RUSTSEC-2025-0057", = "fxhash unmaintained: transitive via sled 0.34, no safe upgrade available" },
{ = "RUSTSEC-2024-0384", = "instant unmaintained: transitive via sled 0.34 -> parking_lot 0.11, no safe upgrade available" },
]
# ----------------------------------------------------------------------------
# Licenses
# ----------------------------------------------------------------------------
# rsnake itself is GPL-3.0-only, so copyleft-compatible permissive licenses are
# what we need from dependencies. Anything not listed here fails the build on
# purpose -- add it deliberately, with a note, rather than loosening the list.
[]
# Kept to exactly the licenses present in the current graph, so that a new
# license shows up as a CI failure and gets reviewed instead of sliding in.
= [
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"BSD-3-Clause",
"BSL-1.0",
"MIT",
"Unicode-3.0",
"Unlicense",
"Zlib",
]
# A license file must match a known license text this closely to be accepted.
= 0.8
# Per-crate escape hatches. Prefer these over widening `allow` above: they keep
# an odd license scoped to the one crate that actually uses it.
= [
# This crate. GPL-3.0-only is deliberately *not* in the global allow list so
# a GPL-licensed dependency cannot slip in unnoticed.
{ = "rsnaker", = ["GPL-3.0-only"] },
]
# ----------------------------------------------------------------------------
# Bans: duplicate versions and crates we never want linked in
# ----------------------------------------------------------------------------
[]
# Warn rather than fail: duplicate versions in a transitive graph are usually
# not ours to fix, but they are worth seeing in the log.
= "warn"
# Refuse `version = "*"` dependencies.
= "deny"
= "all"
= []
= []
= []
= []
# ----------------------------------------------------------------------------
# Sources: where crates are allowed to come from
# ----------------------------------------------------------------------------
[]
= "deny"
= "deny"
= ["https://github.com/rust-lang/crates.io-index"]
= []