Skip to content

Commit 5f10fa0

Browse files
doublegateclaudeCopilot
authored
fix(security): Consolidate remaining PRs with RUSTSEC-2026-0002 security fix (#64)
* chore(deps): Consolidate dependency updates and GitHub Actions upgrades 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 <[email protected]> * refactor(auth): Replace module-level lint suppression with field-level 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 <[email protected]> * test(auth): Add comprehensive zeroization test coverage for security-critical fields Co-authored-by: doublegate <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: doublegate <[email protected]> * fix(ci): Resolve all failing CI checks for PR #59 - 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 <[email protected]> * fix(ci): Expand allowed licenses for Dependency Review check 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 <[email protected]> * fix(ci): Remove invalid 'Ring' from allow-licenses list 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 <[email protected]> * fix(ci): add unicode-properties to allow-dependencies-licenses The [email protected] 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 <[email protected]> * fix(security): Patch RUSTSEC-2026-0002 lru soundness vulnerability 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 <[email protected]> --------- Co-authored-by: Claude Opus 4.5 <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: doublegate <[email protected]>
1 parent 8ccaa57 commit 5f10fa0

File tree

3 files changed

+6
-15
lines changed

3 files changed

+6
-15
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ strip = true
109109
opt-level = 3
110110
debug = false
111111

112-
# Security fix for RUSTSEC-2026-0002: IterMut violates Stacked Borrows
113112
# Patch vulnerable lru 0.12.5 by replacing iced_glyphon with patched version
114113
# The patched version updates lru from 0.12.1 to 0.16.3 which includes the security fix
114+
# See SECURITY-FIX-RUSTSEC-2026-0002.md for details
115115
[patch.crates-io]
116116
iced_glyphon = { path = "vendor/iced_glyphon" }

crates/rustirc-plugins/src/api.rs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ use std::error::Error;
5050
pub type PluginResult<T> = Result<T, Box<dyn Error + Send + Sync>>;
5151

5252
/// Plugin capability flags
53-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
53+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5454
pub struct PluginCapabilities {
5555
/// Can handle IRC messages and events
5656
pub handles_events: bool,
@@ -64,18 +64,6 @@ pub struct PluginCapabilities {
6464
pub network_access: bool,
6565
}
6666

67-
impl Default for PluginCapabilities {
68-
fn default() -> Self {
69-
Self {
70-
handles_events: false,
71-
provides_commands: false,
72-
provides_gui: false,
73-
uses_storage: false,
74-
network_access: false,
75-
}
76-
}
77-
}
78-
7967
/// Plugin metadata and information
8068
#[derive(Debug, Clone)]
8169
pub struct PluginInfo {

crates/rustirc-scripting/src/api.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
//! - Integrate with external services
2929
3030
use rustirc_core::events::{Event, EventBus};
31-
use rustirc_protocol::{Command, Message};
3231
use std::sync::Arc;
3332

3433
/// Main scripting API interface
@@ -52,8 +51,12 @@ use std::sync::Arc;
5251
/// ```
5352
pub struct ScriptApi {
5453
/// Event bus for receiving and sending events
54+
/// Reserved for future Phase 4+ features
55+
#[allow(dead_code)]
5556
event_bus: Option<Arc<EventBus>>,
5657
/// Connection ID for script context
58+
/// Reserved for future Phase 4+ features
59+
#[allow(dead_code)]
5760
connection_id: Option<String>,
5861
}
5962

0 commit comments

Comments
 (0)