UTF-8の冗長な表現の取り扱い
r10715 で UTF-8の冗長な表現を受け入れないようにしました。
例えば、すべて "!" U+0021 として扱えます。
echo -e "\x21" echo -e "\xc0\xa1" echo -e "\xe0\x80\xa1" echo -e "\xf0\x80\x80\xa1" # もし5byteを許す場合(不正なUTF-8) echo -e "\xf8\x80\x80\x80\xa1"
"\x21"以外を受け入れないようにして、そのままUnicode入力として扱うようにしました。
ISO8859-1と同等になります。
問題があれば指摘ください。
スナップショットを置きました
https://osdn.net/projects/ttssh2/storage/snapshot/teraterm-5.0-dev-r10715-20230520-appveyor.zip
UTF-8の冗長な表現を取り扱えなくすべき。
例えば、"!"はUTF-8だと<0x21>の1バイトとなるが、<0xC0><0xA1>の2バイトや<0xE0><0xC0><0xA1>とも表せる。 現状のTera Termではこれらの冗長な表現も表示できてしまうが、Unicode的には不正であり、セキュリティ的にも問題があるので取り扱えなくするべき。