2e989e35e5165929e0ad5af9a2e295f278ac07ce
Backport of the input-device name fix (PR #8129 by @acrogenesis, merged to
quattro as 9285b19d) onto the v4-0-1 release branch.
Hyprland input-device and monitor names come from USB descriptors and hyprctl
output, so they are attacker-influenceable, yet the toggle and monitor commands
interpolated them straight into hyprctl eval and into generated Lua that
Hyprland re-executes on every reload. XF86TouchpadToggle is bound with
locked = true, so a malicious USB name reached Lua execution from the lock
screen as the logged-in user, and a persisted disable made it run on every
start. Publicly reported by Jorrit Jongma / Chainfire.
The disable is no longer executable Lua anywhere. The device name is stored as
plain-text data in a *-disabled-name sidecar and read back by a packaged module,
default/hypr/disabled-input-device.lua, on every reload; the live hyprctl eval
Lua-quotes the name and rejects control characters outright. The reload loader
excludes the two legacy filenames, so a leftover generated *-disabled.lua on a
not-yet-migrated install can never be sourced as code again, and a migration
recovers the device name from it and deletes it, sanitizing installs that ran
the vulnerable version. All four monitor scripts validate an output name against
a plain-connector-name pattern before writing it as Lua, closing the same latent
pattern in the siblings, and paths.lua treats a set-but-empty XDG_STATE_HOME as
unset to match the bash side.
Clean cherry-pick: all fourteen files are byte-identical to quattro, so merging
v4-0-1 into quattro resolves without a conflict. This branch ships no leftover
*-disabled.lua template of its own -- the tracked "disabled" files are the same
two quattro has -- so the migration is the only path that has to sanitize
anything here.
test/shell passes: 192 files, including the three this adds. The toggle suite's
public-PoC case passes here, as do the monitor scripts' accept/reject cases and
the XDG path cases. test/cli passes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018DEMYa9UWtroz93DhMTtcV
Omarchy
Omarchy is a beautiful, modern & opinionated Linux distribution by DHH.
Read more at omarchy.org.
The Omarchy Manual
The manual lives in manual/, which is its authoritative source. It's
mirrored to learn.omacom.io, where
its screenshots are also hosted.
The Basics
- Getting Started
- Coming From Mac or Windows
- Navigation
- The top bar
- Themes
- Hotkeys
- Unified Clipboard & History
- Reminders
- Notices
- Text Extraction & Dictation
- Screenshots & Recording
- Toggles, idle & screensaver
- Omarchy CLI
The Applications
- Terminal
- Neovim
- AI
- Development Tools
- Shell Tools
- Shell Functions
- TUIs
- GUIs
- Browsers
- Commercial apps/services
- Web Apps
- Gaming
- Filling out PDFs
- Windows VM
- Other Packages
Configuration
- Updates
- Dotfiles
- Shell plugins
- Monitors
- Keyboard, Mouse, Trackpad
- Networking
- System sleep
- Hardware authentication
- Fonts
- Backgrounds
- Prompt
- Branding
- Common tweaks
- Making your own theme
The Rest
- Mac support
- Troubleshooting
- FAQ
- System snapshots
- Security
- Omarchy on...
- Dual Boot Install
- Unattended Installs
License
Omarchy is released under the MIT License.
Description
Omarchy with China region and Chinese language support. Fork of omacom/omarchy.
452 MiB
0 Stars
1 Watchers
0 Forks