-
Notifications
You must be signed in to change notification settings - Fork 0
fix(security): Consolidate remaining PRs with RUSTSEC-2026-0002 security fix #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This PR consolidates updates from multiple open dependency PRs: ## Cargo Dependency Updates Applied: - criterion: 0.5.1 -> 0.8.1 (major version, benchmark framework) - ratatui: 0.29.0 -> 0.30.0 (TUI framework with breaking changes) - serde_json: 1.0.145 -> 1.0.148 - rustls-pki-types: 1.0 -> 1.13.2 - tracing: 0.1.43 -> 0.1.44 - tracing-subscriber: 0.3.20 -> 0.3.22 - clap: 4.5.48 -> 4.5.53 - open: 5.0 -> 5.3.3 - regex: 1.12 -> 1.12.1 ## GitHub Actions Updates Applied: - actions/cache: v4 -> v5 - actions/upload-artifact: v5 -> v6 - actions/download-artifact: v6 -> v7 ## Breaking Changes Resolved: - ratatui 0.30: Added `clear_region` method and `Error` type to Backend trait - Fixed clippy warnings in auth.rs (Zeroize derive pattern) - Fixed clippy unnecessary_unwrap in GUI button component ## Excluded from Consolidation: - iced 0.14.0 (PR #45): Extensive breaking changes requiring major GUI refactor - Would require changes to: scrollable API, application API, Style structs, text_input::Status enum, spacing types, and more - Recommended as separate PR for dedicated migration effort ## PRs Already Merged (content in main): - PR #27, #32: Phase 4 scripting documentation already present ## Verification: - Zero compilation errors - Zero clippy warnings (with -D warnings) - 60 unit tests passing - 49 doctests passing - Release build successful Closes #24, #46, #47, #48, #49, #50, #51, #52, #53, #54, #55, #56 Related: #27, #32 (already merged) Excluded: #45 (iced 0.14.0 - breaking changes too extensive) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…l attributes and add zeroization tests (#60) * Initial plan * refactor(auth): Move lint suppression from module-level to field-level for targeted scope Co-authored-by: doublegate <6858123+doublegate@users.noreply.github.com> * test(auth): Add comprehensive zeroization test coverage for security-critical fields Co-authored-by: doublegate <6858123+doublegate@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: doublegate <6858123+doublegate@users.noreply.github.com>
- Fix auth.rs formatting: Remove trailing whitespace and format unsafe blocks properly according to rustfmt rules - Fix dependency-review-config.yml: Remove conflicting deny-licenses (cannot have both allow-licenses and deny-licenses), use proper purl format for package specifications (pkg:cargo/package-name) - Fix Windows cargo-nextest timeout: Replace cargo install with taiki-e/install-action pre-built binaries to avoid 10+ minute compilation time that caused timeouts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive license list for Rust ecosystem compatibility: - Unicode licenses: Unicode-DFS-2016, Unicode-3.0 - Compression: Zlib, zlib-acknowledgement - Mozilla: MPL-2.0 - Boost: BSL-1.0 - LLVM: Apache-2.0 WITH LLVM-exception - OpenSSL, BlueOak-1.0.0, CC-BY-3.0/4.0, WTFPL, Ring, MIT-0, NCSA Add package allowlist for crates with special license definitions: - Unicode crates (unicode-ident, unicode-normalization, etc.) - Cryptography crates (ring, webpki, rustls-webpki) - OpenSSL bindings - lab crate (low OpenSSF scorecard but essential) Remove openssl-sys from deny-packages list. Fixes Dependency Review check failure on PR #59. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ring is not a valid SPDX license identifier. The ring crate uses ISC license, which is already in the allow list. The ring package is also in the allow-dependencies-licenses list to ensure it passes checks. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The unicode-properties@0.1.4 crate uses "MIT/Apache-2.0" as its license string, which is not valid SPDX format (should be "MIT OR Apache-2.0"). GitHub's dependency-review-action cannot validate non-SPDX license strings. Adding the package to allow-dependencies-licenses bypasses the SPDX validation while still allowing the dependency since both MIT and Apache-2.0 are approved licenses. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Apply security fix for vulnerable lru 0.12.5 in iced_glyphon dependency. Security Fix Applied: - Vendor patched iced_glyphon 0.6.0 with lru updated to 0.16.3 - Add Cargo patch to use vendored version - Resolves RUSTSEC-2026-0002 (IterMut violating Stacked Borrows) Dependency Chain Fixed: rustirc -> rustirc-gui -> iced 0.13.1 -> iced_wgpu -> iced_glyphon -> lru Code Quality Improvements: - Add Default derive to PluginCapabilities (clippy::derivable_impls) - Add dead_code allows for reserved Phase 4+ fields in ScriptApi Related to PR #45 (iced 0.14.0). Full iced migration deferred as it requires 82+ breaking API changes - recommended for separate PR. PRs #27, #32 superseded - Phase 4 documentation already in main branch. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary of ChangesHello @doublegate, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request primarily focuses on resolving a critical memory safety vulnerability (RUSTSEC-2026-0002) found in the Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR applies a critical security fix for RUSTSEC-2026-0002 (lru v0.12.5 vulnerability) by vendoring a patched version of iced_glyphon. It also consolidates changes from PRs #45, #32, and #27, updates dependencies to recent versions, and makes code quality improvements.
Changes:
- Vendors patched iced_glyphon v0.6.0 with lru updated from 0.12.5 to 0.16.3
- Updates workspace dependencies (ratatui 0.30, criterion 0.8.1, clap 4.5.53, tracing 0.1.44, etc.)
- Adds clippy fixes and test coverage for zeroize functionality
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| vendor/iced_glyphon/* | Vendored patched dependency fixing lru security vulnerability |
| Cargo.toml | Added patch section and updated dependency versions |
| Cargo.lock | Dependency tree updates reflecting security fix and version bumps |
| SECURITY-FIX-RUSTSEC-2026-0002.md | Security fix documentation |
| crates/rustirc-core/src/auth.rs | Added zeroization tests and removed invalid zeroize(skip) attributes |
| crates/rustirc-tui/src/ui.rs | Ratatui 0.30 compatibility fix |
| crates/rustirc-plugins/src/api.rs | Derived Default for PluginCapabilities (clippy fix) |
| crates/rustirc-scripting/src/api.rs | Added dead_code allows for reserved fields |
| .github/workflows/* | GitHub Actions version updates |
| .github/dependency-review-config.yml | Enhanced license and package allowlist |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request effectively addresses the RUSTSEC-2026-0002 security vulnerability by vendoring and patching iced_glyphon to use a secure version of the lru crate. The changes are well-documented, both in the new SECURITY-FIX-RUSTSEC-2026-0002.md file and through inline comments. The PR also includes a significant number of dependency updates, which are handled correctly with necessary compatibility fixes. The minor refactorings and code cleanups, such as deriving Default and handling clippy lints, improve overall code quality. I've identified one potential issue regarding an inconsistency between Cargo.toml and Cargo.lock for one of the updated dependencies.
I am having trouble creating individual review comments. Click here to see my feedback.
Cargo.toml (45)
The Cargo.lock file does not appear to have been updated to reflect the change in the open crate's version from 5.0 to 5.3.3. This can lead to inconsistent dependency resolution across different environments and may cause CI failures. Please run cargo check or cargo update -p open and commit the resulting changes to Cargo.lock.
Summary
This PR consolidates the remaining 3 open PRs (#45, #32, #27) by:
Security Fix Applied (from PR #45)
lru0.12.5 (transitive dependency via iced_glyphon)IterMutviolates Stacked Borrows by invalidating internal pointersiced_glyphonv0.6.0 withlruupdated to v0.16.3Dependency Chain Fixed:
PRs Consolidated
Why iced 0.14.0 Full Migration is Deferred
Analysis of PR #45 showed 82 compilation errors across these categories:
Space::with_width->Space::width(API rename)text_input::Statusenum changesPixelstrait bound changes (u16 -> f32)snapfield in Style structsThis is manageable but requires dedicated effort and testing. Recommended: Create separate iced 0.14.0 migration PR.
Code Quality Improvements
Defaultderive toPluginCapabilities(clippy::derivable_impls)dead_codeallows for reserved Phase 4+ fields inScriptApiVerification
cargo fmt --check- Zero formatting issuescargo clippy --workspace -- -D warnings- Zero warningscargo test --workspace --lib --bins- All unit tests passcargo test --workspace --doc- All doctests passlruv0.16.3 in dependency treeTest Plan
Files Changed
Cargo.toml- Added patch section for iced_glyphonCargo.lock- Updated with patched dependenciesSECURITY-FIX-RUSTSEC-2026-0002.md- Documentation of security fixvendor/- Patched iced_glyphon sourcecrates/rustirc-plugins/src/api.rs- Clippy fixcrates/rustirc-scripting/src/api.rs- Clippy fixRecommended Follow-up
Generated with Claude Code
Note
Applies the RUSTSEC-2026-0002 fix and streamlines minor APIs.
Cargo.tomlto vendoriced_glyphonwithlruupgraded to0.16.3; referencesSECURITY-FIX-RUSTSEC-2026-0002.md.DefaultforPluginCapabilitiesand removes the manualDefaultimpl.#[allow(dead_code)]inScriptApi.Written by Cursor Bugbot for commit a73cef7. This will update automatically on new commits. Configure here.