1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/utils
Simon Tatham f4519b6533 Add UTF-8 support to the new Windows ConsoleIO system.
This allows you to set a flag in conio_setup() which causes the
returned ConsoleIO object to interpret all its output as UTF-8, by
translating it to UTF-16 and using WriteConsoleW to write it in
Unicode. Similarly, input is read using ReadConsoleW and decoded from
UTF-16 to UTF-8.

This flag is set to false in most places, to avoid making sudden
breaking changes. But when we're about to present a prompts_t to the
user, it's set from the new 'utf8' flag in that prompt, which in turn
is set by the userauth layer in any case where the prompts are going
to the server.

The idea is that this should be the start of a fix for the long-
standing character-set handling bug that strings transmitted during
SSH userauth (usernames, passwords, k-i prompts and responses) are all
supposed to be in UTF-8, but we've always encoded them in whatever our
input system happens to be using, and not done any tidying up on them.
We get occasional complaints about this from users whose passwords
contain characters that are encoded differently between UTF-8 and
their local encoding, but I've never got round to fixing it because
it's a large piece of engineering.

Indeed, this isn't nearly the end of it. The next step is to add UTF-8
support to all the _other_ ways of presenting a prompts_t, as best we
can.

Like the previous change to console handling, it seems very likely
that this will break someone's workflow. So there's a fallback
command-line option '-legacy-charset-handling' to revert to PuTTY's
previous behaviour.
2022-11-26 10:49:03 +00:00
..
antispoof.c Marshalling macros put_dataz and put_datalit. 2021-11-19 15:09:17 +00:00
backend_socket_log.c Move some more files into subdirectories. 2021-11-23 18:52:15 +00:00
base64_decode_atom.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
base64_decode.c Improve the base64 utility functions. 2022-04-25 14:10:16 +01:00
base64_encode_atom.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
base64_encode.c Improve the base64 utility functions. 2022-04-25 14:10:16 +01:00
base64_valid.c New utility function base64_valid(). 2022-05-01 11:27:37 +01:00
bufchain.c Add some more bufchain_try_* functions. 2021-11-19 10:35:38 +00:00
buildinfo.c buildinfo.c: add another Visual Studio version. 2022-09-06 11:39:01 +01:00
burnstr.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
burnwcs.c New utility function burnwcs(). 2022-11-26 10:32:36 +00:00
cert-expr.c Document subdomain matching of cert expr wildcards. 2022-10-22 01:22:10 +01:00
chomp.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
CMakeLists.txt New utility function burnwcs(). 2022-11-26 10:32:36 +00:00
cmdline_get_passwd_input_state_new.c Fix command-line password handling in Restart Session. 2022-05-18 13:05:17 +01:00
conf_dest.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
conf_launchable.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
conf.c Formatting: miscellaneous. 2022-08-03 20:48:46 +01:00
ctrlparse.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
ctrlset_normalise.c Make HelpCtx a per-platform type, not an intorptr. 2022-07-07 17:34:24 +01:00
debug.c Formatting: realign run-on parenthesised stuff. 2022-08-03 20:48:46 +01:00
decode_utf8_to_wchar.c Make decode_utf8() read from a BinarySource. 2022-11-09 19:21:02 +00:00
decode_utf8.c Make decode_utf8() read from a BinarySource. 2022-11-09 19:21:02 +00:00
default_description.c Add 'description' methods for Backend and Plug. 2021-10-24 10:48:25 +01:00
dup_mb_to_wc.c Add UTF-8 support to the new Windows ConsoleIO system. 2022-11-26 10:49:03 +00:00
dup_wc_to_mb.c Add UTF-8 support to the new Windows ConsoleIO system. 2022-11-26 10:49:03 +00:00
dupcat.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
dupprintf.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
dupstr.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
encode_utf8.c Make encode_utf8() output to a BinarySink. 2022-11-09 19:02:32 +00:00
encode_wide_string_as_utf8.c Make encode_utf8() output to a BinarySink. 2022-11-09 19:02:32 +00:00
fgetline.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
host_ca_new_free.c Certificate trust scope: change to a boolean-expression system. 2022-06-25 14:32:23 +01:00
host_strchr_internal.c Build various unit-test main() programs in utils. 2021-04-18 08:30:44 +01:00
host_strchr.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
host_strcspn.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
host_strduptrim.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
host_strrchr.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
key_components.c Extra helper functions for adding key_components. 2022-04-24 08:39:04 +01:00
log_proxy_stderr.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
ltime.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
make_spr_sw_abort_static.c Richer data type for interactive prompt results. 2021-12-28 18:08:31 +00:00
marshal.c Implement a BinarySink writing to a fixed-size buffer. 2022-11-09 19:00:04 +00:00
memory.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
memxor.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
nullstrcmp.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
out_of_memory.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
parse_blocksize.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
percent_decode.c Routines for %-encoding and %-decoding. 2022-06-25 14:30:39 +01:00
percent_encode.c Routines for %-encoding and %-decoding. 2022-06-25 14:30:39 +01:00
prompts.c Add UTF-8 support to the new Windows ConsoleIO system. 2022-11-26 10:49:03 +00:00
ptrlen.c A few more ptrlen functions. 2022-06-25 14:30:39 +01:00
read_file_into.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
seat_connection_fatal.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
seat_dialog_text.c Centralise most details of host-key prompting. 2022-07-07 18:05:32 +01:00
seat_nonfatal.c New Seat method, seat_nonfatal(). 2022-09-13 11:26:57 +01:00
sessprep.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
sk_free_peer_info.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
smemclr.c Fix typo in comment. 2021-04-19 17:14:01 +01:00
smemeq.c Make smemeq return unsigned, not bool. 2022-04-15 17:46:06 +01:00
spr_get_error_message.c Richer data type for interactive prompt results. 2021-12-28 18:08:31 +00:00
ssh2_pick_fingerprint.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
ssh_key_clone.c Utility function ssh_key_clone(). 2022-04-24 08:39:04 +01:00
sshutils.c Move the SSH implementation into its own subdirectory. 2021-04-22 18:09:13 +01:00
strbuf.c Utility function strbuf_dup. 2022-04-24 08:38:27 +01:00
string_length_for_printf.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
stripctrl.c Make encode_utf8() output to a BinarySink. 2022-11-09 19:02:32 +00:00
tempseat.c New Seat method, seat_nonfatal(). 2022-09-13 11:26:57 +01:00
tree234.c Rename 'ret' variables passed from allocation to return. 2022-09-14 16:10:29 +01:00
unicode-known.c Function to check a UTF-8 string for unknown characters. 2022-11-11 08:49:05 +00:00
unicode-norm.c Fix build failure on Visual Studio. 2022-11-11 12:42:19 +00:00
utils.h New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
validate_manual_hostkey.c Fix manual host key validation. 2021-10-25 18:12:21 +01:00
version.c New library-style 'utils' subdirectories. 2021-04-18 08:18:27 +01:00
wcwidth.c Commit read_ucd.py's output and switch over to it. 2022-11-11 08:44:07 +00:00
wildcard.c Build various unit-test main() programs in utils. 2021-04-18 08:30:44 +01:00
wordwrap.c Utility function to do terminal word wrapping. 2022-07-07 18:05:32 +01:00
write_c_string_literal.c Remove duplicated string-literal formatter in Telnet proxy. 2021-12-22 15:05:04 +00:00
x11_dehexify.c Add some missing #includes. 2022-09-03 11:59:12 +01:00
x11_identify_auth_proto.c Add some missing #includes. 2022-09-03 11:59:12 +01:00
x11_make_greeting.c Break up x11fwd.c. 2021-04-18 08:18:27 +01:00
x11_parse_ip.c Add some missing #includes. 2022-09-03 11:59:12 +01:00
x11authfile.c Add a batch of missing 'static's. 2022-09-03 12:02:48 +01:00
x11authnames.c Break up x11fwd.c. 2021-04-18 08:18:27 +01:00