Repository navigation
Tags
Tags
[codex] Fix review hardening issues (#196) * Fix review hardening issues * Fail-fast on invalid Android VPN MTU before socket/runtime setup Move validated_vpn_mtu() ahead of UDP socket creation and Tokio runtime construction in the JNI init path, so an out-of-range MTU returns INIT_FATAL_CONFIG without first allocating those resources. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Split GUI installer: extract shared helpers into installer_common.py install_gui_linux.py exceeded the 500-line CI limit after adding the Node.js/npm and frontend-dependency installation logic. Move the shared infrastructure (output helpers, command execution, distro detection, Rust/Node/cargo-tauri/system-package installers) into a new installer_common.py module and import it from the GUI installer. No behavior change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
refactor(windows): centralize Win32 table lifecycle and name magic va… …lues (#181) * refactor(windows): centralize Win32 table lifecycle and name magic values Conservative, behavior-preserving cleanup of the native Win32 networking layer. - utils.rs: add named constants (ERROR_OBJECT_ALREADY_EXISTS, ERROR_NOT_FOUND, IP_DAD_STATE_PREFERRED/DEPRECATED) and with_if_table / with_forward_table / with_unicast_table helpers that encapsulate the unsafe Get*Table -> from_raw_parts -> FreeMibTable lifecycle in one audited place. - route.rs: use the constants; rewrite route cleanup/verify on with_forward_table. - ip.rs: rewrite wait_for_ipv6_address, win32_add_ip and win32_cleanup_all_ips_on_interface onto with_unicast_table and the new constants, removing duplicated unsafe table boilerplate while preserving iteration order and sleeps; add SAFETY comments. - cleanup.rs: use with_if_table; log previously-swallowed win32_delete_route failures at debug. - reconnect.rs: extract the permanent-failure substrings into a documented PERMANENT_FAILURE_MARKERS const classified via iter().any(contains). No runtime behavior change. cargo test (40 + 238 passed, 1 ignored), clippy and build are green for the touched code. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(windows): gate test-only CommandOutcome helpers behind cfg(test) CommandOutcome::success, failure, and stderr are only used from #[cfg(test)] code, so the non-test mavi-vpn-service binary build flagged them as dead code, failing clippy --all-targets -- -D warnings on CI. Gate them with #[cfg(test)] instead of suppressing the lint. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * refactor(windows): free MIB tables via RAII guard so closures cannot leak on panic The with_if_table/with_forward_table/with_unicast_table helpers freed the table inline after calling the closure, so a panic in the closure would unwind past FreeMibTable and leak the kernel-allocated table. Introduce a MibTable RAII guard that frees the allocation on drop (including during unwind), making these helpers the airtight audited home for the unsafe Get*Table -> FreeMibTable lifecycle they were meant to be. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
test(windows-service): compare IPC ACL by canonical SID instead of SD… …DL alias The hardening_script_removes_stale_aces test read the resulting DACL back via GetSecurityDescriptorSddlForm and checked for the current user's raw SID as a substring. When the test runs as the built-in Administrator (RID 500), SDDL abbreviates that account to the `LA` alias, so the raw-SID check failed even though the ACE was correct. Enumerate the access rules with explicit SecurityIdentifier identities so SYSTEM, Admins, and the current user compare by canonical SID regardless of SDDL aliasing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PreviousNext