[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