Bump git2 to 0.21, infer to 0.22, bzip2 to 0.6 in the server
git2 0.21 is not the no-op the version jump suggests: Signature::name,
TreeEntry::name and Reference::shorthand now return Result rather than
Option, Blame::final_signature returns Option<Signature>, and the
StringArray iterator yields Result<Option<&str>, Error>. Adjusted the
four call sites in src/git accordingly; behaviour is unchanged.
object stays at 0.37. authenticode 0.5 implements PeTrait for object
0.37's PeFile, so bumping object alone breaks Windows signature
scanning. authenticode 0.6 requires object 0.39, which makes object part
of the x509/authenticode cluster rather than a standalone bump.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6 files changed,
+21 insertions,
-35 deletions
| 1573 |
1573 |
|
|
| 1574 |
1574 |
|
[[package]]
|
| 1575 |
1575 |
|
name = "cfb"
|
| 1576 |
|
- |
version = "0.7.3"
|
|
1576 |
+ |
version = "0.14.0"
|
| 1577 |
1577 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1578 |
|
- |
checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
|
|
1578 |
+ |
checksum = "a347dcabdae9c31b0825fd6a8bed285ec9c2acb89c47827126d52fa4f59cece3"
|
| 1579 |
1579 |
|
dependencies = [
|
| 1580 |
|
- |
"byteorder",
|
| 1581 |
1580 |
|
"fnv",
|
| 1582 |
1581 |
|
"uuid",
|
|
1582 |
+ |
"web-time",
|
| 1583 |
1583 |
|
]
|
| 1584 |
1584 |
|
|
| 1585 |
1585 |
|
[[package]]
|
| 3163 |
3163 |
|
|
| 3164 |
3164 |
|
[[package]]
|
| 3165 |
3165 |
|
name = "git2"
|
| 3166 |
|
- |
version = "0.20.4"
|
|
3166 |
+ |
version = "0.21.0"
|
| 3167 |
3167 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3168 |
|
- |
checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b"
|
|
3168 |
+ |
checksum = "ddddbf932745a6be37109b6112d3ee09696106f848449069d3a57bba937ab82e"
|
| 3169 |
3169 |
|
dependencies = [
|
| 3170 |
3170 |
|
"bitflags 2.13.0",
|
| 3171 |
3171 |
|
"libc",
|
| 3172 |
3172 |
|
"libgit2-sys",
|
| 3173 |
3173 |
|
"log",
|
| 3174 |
|
- |
"openssl-probe 0.1.6",
|
| 3175 |
|
- |
"openssl-sys",
|
| 3176 |
|
- |
"url",
|
| 3177 |
3174 |
|
]
|
| 3178 |
3175 |
|
|
| 3179 |
3176 |
|
[[package]]
|
| 3855 |
3852 |
|
|
| 3856 |
3853 |
|
[[package]]
|
| 3857 |
3854 |
|
name = "infer"
|
| 3858 |
|
- |
version = "0.19.0"
|
|
3855 |
+ |
version = "0.22.0"
|
| 3859 |
3856 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3860 |
|
- |
checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
|
|
3857 |
+ |
checksum = "f4200d433cbd5178df7797c9c2e75b348b728e39631cf14520d1e2fc424201f4"
|
| 3861 |
3858 |
|
dependencies = [
|
| 3862 |
3859 |
|
"cfb",
|
| 3863 |
3860 |
|
]
|
| 4089 |
4086 |
|
dependencies = [
|
| 4090 |
4087 |
|
"cc",
|
| 4091 |
4088 |
|
"libc",
|
| 4092 |
|
- |
"libssh2-sys",
|
| 4093 |
4089 |
|
"libz-sys",
|
| 4094 |
|
- |
"openssl-sys",
|
| 4095 |
4090 |
|
"pkg-config",
|
| 4096 |
4091 |
|
]
|
| 4097 |
4092 |
|
|
| 4124 |
4119 |
|
]
|
| 4125 |
4120 |
|
|
| 4126 |
4121 |
|
[[package]]
|
| 4127 |
|
- |
name = "libssh2-sys"
|
| 4128 |
|
- |
version = "0.3.2"
|
| 4129 |
|
- |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 4130 |
|
- |
checksum = "c04141a07bb0c0bc461cb657808764de571702a59bc5c726c400ac9a7625e3ab"
|
| 4131 |
|
- |
dependencies = [
|
| 4132 |
|
- |
"cc",
|
| 4133 |
|
- |
"libc",
|
| 4134 |
|
- |
"libz-sys",
|
| 4135 |
|
- |
"openssl-sys",
|
| 4136 |
|
- |
"pkg-config",
|
| 4137 |
|
- |
"vcpkg",
|
| 4138 |
|
- |
]
|
| 4139 |
|
- |
|
| 4140 |
|
- |
[[package]]
|
| 4141 |
4122 |
|
name = "libz-sys"
|
| 4142 |
4123 |
|
version = "1.1.29"
|
| 4143 |
4124 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 4339 |
4320 |
|
"axum-extra",
|
| 4340 |
4321 |
|
"base64 0.22.1",
|
| 4341 |
4322 |
|
"bytes",
|
| 4342 |
|
- |
"bzip2 0.4.4",
|
|
4323 |
+ |
"bzip2 0.6.1",
|
| 4343 |
4324 |
|
"chacha20poly1305",
|
| 4344 |
4325 |
|
"chrono",
|
| 4345 |
4326 |
|
"clap",
|
| 83 |
83 |
|
tempfile = "3"
|
| 84 |
84 |
|
|
| 85 |
85 |
|
# File scanning
|
| 86 |
|
- |
infer = "0.19"
|
|
86 |
+ |
infer = "0.22"
|
| 87 |
87 |
|
goblin = "0.10"
|
| 88 |
88 |
|
zip = "8.2"
|
| 89 |
89 |
|
# Single-stream decompressors for archive-bomb detection (already in the tree
|
| 90 |
90 |
|
# transitively via `zip`; pinned to the resolved versions so no new build).
|
| 91 |
91 |
|
flate2 = "1"
|
| 92 |
|
- |
bzip2 = "0.4"
|
|
92 |
+ |
bzip2 = "0.6"
|
| 93 |
93 |
|
xz2 = "0.1"
|
| 94 |
94 |
|
zstd = "0.13"
|
| 95 |
95 |
|
yara-x = "1.16"
|
| 127 |
127 |
|
makeover = "1.0.0"
|
| 128 |
128 |
|
|
| 129 |
129 |
|
# Git source browser
|
| 130 |
|
- |
git2 = { version = "0.20", features = ["vendored-libgit2"] }
|
|
130 |
+ |
git2 = { version = "0.21", features = ["vendored-libgit2"] }
|
| 131 |
131 |
|
syntect = { version = "5", default-features = false, features = ["default-syntaxes", "default-themes", "html", "regex-fancy"] }
|
| 132 |
132 |
|
regex = "1"
|
| 133 |
133 |
|
semver = "1"
|
| 363 |
363 |
|
let short_oid = oid_str[..7.min(oid_str.len())].to_string();
|
| 364 |
364 |
|
|
| 365 |
365 |
|
let sig = hunk.final_signature();
|
| 366 |
|
- |
let author_name = sig.name().unwrap_or("Unknown").to_string();
|
| 367 |
|
- |
let time_formatted = chrono::DateTime::from_timestamp(sig.when().seconds(), 0)
|
|
366 |
+ |
let author_name = sig
|
|
367 |
+ |
.as_ref()
|
|
368 |
+ |
.and_then(|s| s.name().ok())
|
|
369 |
+ |
.unwrap_or("Unknown")
|
|
370 |
+ |
.to_string();
|
|
371 |
+ |
let when = sig.as_ref().map(|s| s.when().seconds()).unwrap_or_default();
|
|
372 |
+ |
let time_formatted = chrono::DateTime::from_timestamp(when, 0)
|
| 368 |
373 |
|
.unwrap_or_default()
|
| 369 |
374 |
|
.format("%Y-%m-%d")
|
| 370 |
375 |
|
.to_string();
|
| 278 |
278 |
|
let default_branch = repo
|
| 279 |
279 |
|
.head()
|
| 280 |
280 |
|
.ok()
|
| 281 |
|
- |
.and_then(|r| r.shorthand().map(String::from))
|
|
281 |
+ |
.and_then(|r| r.shorthand().ok().map(String::from))
|
| 282 |
282 |
|
.unwrap_or_else(|| "main".to_string());
|
| 283 |
283 |
|
|
| 284 |
284 |
|
RepoInfo {
|
| 31 |
31 |
|
let mut items: Vec<TreeItem> = target_tree
|
| 32 |
32 |
|
.iter()
|
| 33 |
33 |
|
.filter_map(|entry| {
|
| 34 |
|
- |
let name = entry.name()?.to_string();
|
|
34 |
+ |
let name = entry.name().ok()?.to_string();
|
| 35 |
35 |
|
let kind = match entry.kind()? {
|
| 36 |
36 |
|
ObjectType::Tree => TreeItemKind::Dir,
|
| 37 |
37 |
|
ObjectType::Blob => TreeItemKind::File,
|
| 54 |
54 |
|
}
|
| 55 |
55 |
|
|
| 56 |
56 |
|
if let Ok(tags) = repo.tag_names(None) {
|
| 57 |
|
- |
for tag in tags.iter().flatten() {
|
|
57 |
+ |
for tag in tags.iter().flatten().flatten() {
|
| 58 |
58 |
|
refs.push(RefInfo {
|
| 59 |
59 |
|
name: tag.to_string(),
|
| 60 |
60 |
|
is_branch: false,
|