[Bug 2122047] Re: Case-fold the Windows username before sanitization
Carlos Nihelton
2122047 at bugs.launchpad.net
Wed Dec 17 22:22:19 UTC 2025
A git-ubuntu branch is presented via the linked MP to address this bug
by uploading the new upstream release to resolute. Sponsors can freely
ignore that branch and just checkout the tag 0.6.0 from the upstream
repository (github.com/ubuntu/wsl-setup), build the source package and
upload it. The commit IDs would be different but the contents are the
same.
** Merge proposal linked:
https://code.launchpad.net/~cnihelton/ubuntu/+source/wsl-setup/+git/wsl-setup/+merge/497725
--
You received this bug notification because you are a member of Ubuntu
Sponsors, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/2122047
Title:
Case-fold the Windows username before sanitization
Status in wsl-setup package in Ubuntu:
New
Status in wsl-setup source package in Resolute:
New
Bug description:
The `wsl-setup` script reads the Windows user name and sanitizes it,
dropping invalid characters for a Linux user name, including ASCII upper
case letters. We could case fold the username first and then drop the
invalid ones, making it a bit less surprising. That would still have
some nasty cases we cannot handle in a smart way, like `MartínJoão` being
converted into `martnjoo` but that’s why we prompt for the username, to
let users edit that before actual submission.
While case folding can be done with `tr "[:upper:]" "[:lower:]"` or even
better `awk '{print tolower(0)}'` (awk handles Unicode better), better yet
is to leverage PowerShell because then we're guaranteed to respect the
Windows user locale (a WSL instance could be set up with a different
locale and the case-folding results couldn't match the user's
expectation).
To illustrate how this works:
```bash
j at DESKTOP-551PQ9O:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
j at DESKTOP-551PQ9O:~$ powershell.exe -Command '$Env:Username'
João
j at DESKTOP-551PQ9O:~$ var="Username"; powershell.exe -NoProfile -Command '& {
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$Env:'"${var}"'}'
João
j at DESKTOP-551PQ9O:~$ var="Username.ToLower()"; powershell.exe -NoProfile -Command '& {
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$Env:'"${var}"'}'
joão
```
In the example above the username would be sanitized to: `oo`
but with the changes it would at least be: `joo`
(the 'ã' is still dropped, but it's much easier to add it).
The motivation for this change came from a user named `AdminUser`.
That would originally be sanitized to: `dminser`
but now it becomes: `adminuser`
One must remember that in the end this name is just a suggestion
prefilling a read input. User is free to edit it before hitting enter
and submitting the username to the `adduser` program.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/wsl-setup/+bug/2122047/+subscriptions
More information about the Ubuntu-sponsors
mailing list