2021-04-18 12:38:50 +00:00
|
|
|
add_sources_from_current_dir(utils
|
2021-09-16 10:43:02 +00:00
|
|
|
antispoof.c
|
2021-04-18 12:38:50 +00:00
|
|
|
base64_decode_atom.c
|
|
|
|
base64_encode_atom.c
|
|
|
|
bufchain.c
|
|
|
|
buildinfo.c
|
|
|
|
burnstr.c
|
|
|
|
chomp.c
|
|
|
|
conf.c
|
|
|
|
conf_dest.c
|
|
|
|
conf_launchable.c
|
|
|
|
ctrlparse.c
|
|
|
|
debug.c
|
|
|
|
dupcat.c
|
|
|
|
dupprintf.c
|
|
|
|
dupstr.c
|
|
|
|
encode_utf8.c
|
win_set_[icon_]title: send a codepage along with the string.
While fixing the previous commit I noticed that window titles don't
actually _work_ properly if you change the terminal character set,
because the text accumulated in the OSC string buffer is sent to the
TermWin as raw bytes, with no indication of what character set it
should interpret them as. You might get lucky if you happened to
choose the right charset (in particular, UTF-8 is a common default),
but if you change the charset half way through a run, then there's
certainly no way the frontend will know to interpret two window titles
sent before and after the change in two different charsets.
So, now win_set_title() and win_set_icon_title() both include a
codepage parameter along with the byte string, and it's up to them to
translate the provided window title from that encoding to whatever the
local window system expects to receive.
On Windows, that's wide-string Unicode, so we can just use the
existing dup_mb_to_wc utility function. But in GTK, it's UTF-8, so I
had to write an extra utility function to encode a wide string as
UTF-8.
2021-10-16 12:20:44 +00:00
|
|
|
encode_wide_string_as_utf8.c
|
2021-04-18 12:38:50 +00:00
|
|
|
fgetline.c
|
|
|
|
host_strchr.c
|
|
|
|
host_strchr_internal.c
|
|
|
|
host_strcspn.c
|
|
|
|
host_strduptrim.c
|
|
|
|
host_strrchr.c
|
|
|
|
marshal.c
|
|
|
|
memory.c
|
|
|
|
memxor.c
|
|
|
|
miscucs.c
|
|
|
|
null_lp.c
|
|
|
|
nullseat.c
|
|
|
|
nullstrcmp.c
|
|
|
|
out_of_memory.c
|
|
|
|
parse_blocksize.c
|
|
|
|
prompts.c
|
|
|
|
ptrlen.c
|
|
|
|
read_file_into.c
|
|
|
|
seat_connection_fatal.c
|
|
|
|
sessprep.c
|
|
|
|
sk_free_peer_info.c
|
|
|
|
smemclr.c
|
|
|
|
smemeq.c
|
|
|
|
ssh2_pick_fingerprint.c
|
|
|
|
sshutils.c
|
|
|
|
strbuf.c
|
|
|
|
string_length_for_printf.c
|
|
|
|
stripctrl.c
|
Allow new_connection to take an optional Seat. (NFC)
This is working towards allowing the subsidiary SSH connection in an
SshProxy to share the main user-facing Seat, so as to be able to pass
through interactive prompts.
This is more difficult than the similar change with LogPolicy, because
Seats are stateful. In particular, the trust-sigil status will need to
be controlled by the SshProxy until it's ready to pass over control to
the main SSH (or whatever) connection.
To make this work, I've introduced a thing called a TempSeat, which is
(yet) another Seat implementation. When a backend hands its Seat to
new_connection(), it does it in a way that allows new_connection() to
borrow it completely, and replace it in the main backend structure
with a TempSeat, which acts as a temporary placeholder. If the main
backend tries to do things like changing trust status or sending
output, the TempSeat will buffer them; later on, when the connection
is established, TempSeat will replay the changes into the real Seat.
So, in each backend, I've made the following changes:
- pass &foo->seat to new_connection, which may overwrite it with a
TempSeat.
- if it has done so (which we can tell via the is_tempseat() query
function), then we have to free the TempSeat and reinstate our main
Seat. The signal that we can do so is the PLUGLOG_CONNECT_SUCCESS
notification, which indicates that SshProxy has finished all its
connection setup work.
- we also have to remember to free the TempSeat if our backend is
disposed of without that having happened (e.g. because the
connection _doesn't_ succeed).
- in backends which have no local auth phase to worry about, ensure
we don't call seat_set_trust_status on the main Seat _before_ it
gets potentially replaced with a TempSeat. Moved some calls of
seat_set_trust_status to just after new_connection(), so that now
the initial trust status setup will go into the TempSeat (if
appropriate) and be buffered until that seat is relinquished.
In all other uses of new_connection, where we don't have a Seat
available at all, we just pass NULL.
This is NFC, because neither new_connection() nor any of its delegates
will _actually_ do this replacement yet. We're just setting up the
framework to enable it to do so in the next commit.
2021-09-13 16:17:20 +00:00
|
|
|
tempseat.c
|
2021-04-18 12:38:50 +00:00
|
|
|
tree234.c
|
|
|
|
validate_manual_hostkey.c
|
|
|
|
version.c
|
|
|
|
wcwidth.c
|
|
|
|
wildcard.c
|
|
|
|
write_c_string_literal.c
|
|
|
|
x11authfile.c
|
|
|
|
x11authnames.c
|
|
|
|
x11_dehexify.c
|
|
|
|
x11_identify_auth_proto.c
|
|
|
|
x11_make_greeting.c
|
|
|
|
x11_parse_ip.c)
|