Skip to content

build: 依赖安全对齐——zip 升到 9.x、quick-xml 升到 0.42 - #13

Merged
daha1216 merged 4 commits into
masterfrom
build/deps-security-alignment
Oct 28, 2026
Merged

daha1216 merged 4 commits into
masterfrom
build/deps-security-alignment

Conversation

@daha1216

Copy link
Copy Markdown
Owner

统一升级取代 dependabot #9 与 #11。

为什么

  • zip 2.6.1 命中 RUSTSEC-2026-0367 / -0369,修补版本线是 9.0.0,2.x 没有修补版。
  • quick-xml 0.38.4 命中 RUSTSEC-2026-0194 / -0195,修补于 0.41;锁文件里同时还躺着 plist 拉进来的 0.42.0,同一 crate 两个版本。

改了什么

  • Cargo.toml:zip = { version = "9", default-features = false, features = ["deflate"] }、quick-xml = "0.42"。
  • 适配两处新 API(都在 src/macos,只在 macOS 编译):
    • local_name() 返回 &str,原来的 as_ref() == b"item" 字节比较改成字符串比较;read_text() 返回 BytesText,补 .xml10_content();decode_and_unescape_value(reader.decoder()) 换成 normalized_value(XmlVersion::Implicit1_0)。
    • ZipFile::name() 改成返回 Result,加了 map_err。
  • cargo update 顺带把 patch 级依赖拉到最新(tauri 2.12.5、tokio 1.54.1、webpki-roots 1.0.11、rustls 0.23.46、rustls-webpki 0.103.16)。
  • 解压路径没动:仍然走 /usr/bin/ditto -x -k,zip 只读条目元数据,不调用 extract()。

验证

  • Windows 本地:cargo fmt --check / cargo clippy --locked --all-targets -- -D warnings / cargo test --locked 全绿,212 passed / 0 failed / 1 ignored。
  • src/macos 只在 macOS 参与编译,本地 Windows 编不到,所以这个 PR 需要 macOS job 才能证明 quick-xml / zip 的改动编得过——CI 刚被重新启用,请以 macOS job 结果为准。

- zip 2.6.1 → 9.1.3:RUSTSEC-2026-0367/0369 的修补版本线是 9.0.0,2.x 没有修补版。
  解压仍走系统 ditto -x -k,zip 只用于读条目元数据,不调用 extract()。
- quick-xml 0.38.4 → 0.42.0:RUSTSEC-2026-0194/0195 修补于 0.41;同时与 plist
  依赖的 0.42 对齐,锁文件里不再有两个 quick-xml 版本。
- 适配新 API:local_name() 改返回 &str(原为字节比较),read_text() 返回 BytesText
  需 xml10_content(),Attribute::decode_and_unescape_value 换成 normalized_value,
  ZipFile::name() 改成返回 Result。
- 一并更新 patch 级依赖(tauri 2.12.5、tokio 1.54.1、webpki-roots 1.0.11)。

取代 dependabot PR #9 与 #11。
3f42c67 加了 macOS CI job,但共享代码引用的几个符号在 src/macos/ 下没有对应
实现,那个 job 从建立起就是红的:

- guard::ClaudePresence / guard::claude_presence:monitor 的退出清理每拍要问一次
  「有没有 claude、是不是桌面端」。按 macOS 已有的 classify_claude 实现,桌面端
  优先返回。
- guard::firewall_rule_count:恢复核验用。这个构建不创建防火墙规则,返回 Some(0)
  而不是 None——None 在核验里表示「查不到即不干净」,而这里的 0 是确知的。
- netcut::CUT_RULE:账本记账用,与 Windows 侧同名同值。
- update.rs 的 `Path` 导入,以及只对 Windows 发布资产成立的下载用例补 cfg(windows)。
这个用例只验证「子进程正常退出时输出与退出码被完整保留」,跟时限无关;
5 秒在 GitHub runner 上偶发不够(首个 PowerShell 冷启动要几秒),
2026-10-28 的 CI 就因此以 211 passed / 1 failed 挂掉。给到 60 秒,
超时路径本身由 inspection_timeout_stops_only_its_read_only_probe 覆盖。
依赖安全对齐与 macOS 移植补全,README 的版本列表同步。
@daha1216
daha1216 merged commit d397483 into master Oct 28, 2026
2 checks passed
@daha1216
daha1216 deleted the build/deps-security-alignment branch October 28, 2026 11:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant