Public bug reported:
[Impact]
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@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@DESKTOP-551PQ9O:~$ powershell.exe -Command '$Env:Username'
João
j@DESKTOP-551PQ9O:~$ var="Username"; powershell.exe -NoProfile -Command '& {
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$Env:'"${var}"'}'
João
j@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).
** Affects: wsl-setup (Ubuntu)
Importance: Undecided
Status: New
** Summary changed:
- [SRU] Case fold Windows username before prompting for user creation
+ [SRU] Case-fold the Windows username before sanitization
** Description changed:
- WIP
+ [Impact]
+
+ 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@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@DESKTOP-551PQ9O:~$ powershell.exe -Command '$Env:Username'
+ João
+
+ j@DESKTOP-551PQ9O:~$ var="Username"; powershell.exe -NoProfile -Command '& {
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
+ $Env:'"${var}"'}'
+ João
+
+ j@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).
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2138661
Title:
[SRU] Case-fold the Windows username before sanitization
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/wsl-setup/+bug/2138661/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs