[Bug 394570] Re: Backspace via SSH only deletes last byte of characters (no IUTF8 handling, requires standardisation work)

Bug Watch Updater 394570 at bugs.launchpad.net
Mon Aug 8 10:46:37 UTC 2016


** Changed in: openssh (Debian)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to openssh in Ubuntu.
https://bugs.launchpad.net/bugs/394570

Title:
  Backspace via SSH only deletes last byte of characters (no IUTF8
  handling, requires standardisation work)

Status in openssh package in Ubuntu:
  Triaged
Status in openssh package in Debian:
  Fix Released

Bug description:
  Binary package hint: openssh-client

  This is not a terminal-related problem: regardless of the terminal
  used and the way the backspace key is supposed to behave (ASCII DEL,
  escape sequence, Control+H), what happens is that via SSH the
  backspace key only deletes the last byte of a character, not the whole
  character itself.

  You can notice this when you use UTF-8 characters that are encoded on
  more than 1 byte. Some diacritics from the Latin alphabet are encoded
  on 2 bytes, whereas some Japanese characters are encoded on 3.

  As an example, assume the following scenario: the letter "ș" is
  encoded as "c8 99" and endline is encoded as "0a":

  user at host:~$ cat > ș.txt
  ș
  ^d
  user at host:~$ hexdump -C ș.txt 
  00000000  c8 99 0a                                          |...|
  00000003

  Now, assume you write "testș[hit backspace]test[endline]". On the
  physical host (i.e. without being SSH-ed into it), the hexdump of that
  file will be:

  user at host:~$ cat > test.txt
  testș[backspace]test
  ^d
  user at host:~$ hexdump -C test.txt
  00000000  74 65 73 74 74 65 73 74  0a                       |testtest.|
  00000009

  whereas the *same* thing via SSH would lead you to having the
  following hexdump:

  user at host:~$ ssh user at localhost
  user at localhost's password: 
  user at host:~$ cat > test.txt
  testș[backspace]test
  ^d
  user at host:~$ hexdump -C test.txt
  00000000  74 65 73 74 c8 74 65 73  74 0a                    |test.test.|
  0000000a

  So notice how backspace only deleted via SSH the last byte of "ș" i.e.
  only the "99" out of "c8 99"; compare the expected hexdump:

  74 65 73 74 74 65 73 74  0a

  with the actual hexdump:

  74 65 73 74 c8 74 65 73  74 0a

  locale is set to en_US.UTF-8; changing it to ro_RO.UTF-8 (both on the
  host and via SSH) yields the same results.

  Finally, last details:

  Ubuntu 9.04
  Kernel 2.6.28-13-generic
  openssh-client:  Installed: 1:5.1p1-5ubuntu1
  openssh-server:  Installed: 1:5.1p1-5ubuntu1

  L.E.: I also tried the same thing using dropbear instead of OpenSSH.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/394570/+subscriptions



More information about the foundations-bugs mailing list