Skip to content

Fail root setup before side effects#18

Merged
OneNoted merged 2 commits intouinput-root-guardfrom
uinput-root-guard-early
Apr 15, 2026
Merged

Fail root setup before side effects#18
OneNoted merged 2 commits intouinput-root-guardfrom
uinput-root-guard-early

Conversation

@OneNoted
Copy link
Copy Markdown
Owner

Summary

  • reject whispers setup as root before any config or setup side effects run
  • keep the existing root-specific error message
  • lock the behavior with a dedicated setup regression test

Verification

  • cargo test setup::tests:: -- --nocapture
  • cargo fmt --all -- --check
  • cargo check --all-targets
  • cargo clippy --all-targets -- -D warnings
  • cargo test

Follow-up stacked on #16.

Reject `whispers setup` at the start of the setup flow when it is launched as root so it cannot mutate config or starter files before reporting the privilege error.

Constraint: Root-only setup runs must fail before any local state is written
Rejected: Leave the root guard inside the later injection setup helper | config and starter files can already be mutated before that point
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep the root guard at the top of `run_setup()` so later helpers cannot become the first failing point again
Tested: cargo test setup::tests:: -- --nocapture; cargo fmt --all -- --check; cargo check --all-targets; cargo clippy --all-targets -- -D warnings; cargo test
Not-tested: Live sudo invocation
Make the non-zero clipboard test consume stdin before exiting so CI reliably exercises the intended non-zero exit path instead of racing into a broken-pipe write.

Constraint: The test should still cover the non-zero exit path, not the broken-pipe write path
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep subprocess tests deterministic by making the child process consume the expected I/O before exiting
Tested: cargo test inject::tests:: -- --nocapture; cargo fmt --all -- --check; cargo check --all-targets; cargo clippy --all-targets -- -D warnings; cargo test
Not-tested: GitHub Actions rerun still pending
@OneNoted OneNoted merged commit 30cbe9b into uinput-root-guard Apr 15, 2026
3 checks passed
@OneNoted OneNoted deleted the uinput-root-guard-early branch April 15, 2026 09:57
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