mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-22 06:38:37 -05:00
Use the new StripCtrlChars for terminal-based auth prompts.
SSH authentication prompts (passwords, passphrases and keyboard- interactive) were previously sanitised to remove escape sequences by the simplistic sanitise_term_data() in utils.c. Now they're fed through the new mode of StripCtrlChars instead, which means they should permit printable Unicode (if the terminal is in UTF-8 mode) while still disallowing escape sequences. Hopefully this will be a usability improvement to everyone whose login prompts are in a language not representable in plain ASCII.
This commit is contained in:
parent
e74790003c
commit
36a11ef8d5
@ -1644,6 +1644,9 @@ Terminal *term_init(Conf *myconf, struct unicode_data *ucsdata, TermWin *win)
|
|||||||
term->paste_buffer = NULL;
|
term->paste_buffer = NULL;
|
||||||
term->paste_len = 0;
|
term->paste_len = 0;
|
||||||
bufchain_init(&term->inbuf);
|
bufchain_init(&term->inbuf);
|
||||||
|
bufchain_sink_init(&term->inbuf_bs, &term->inbuf);
|
||||||
|
term->inbuf_scc = stripctrl_new_term(
|
||||||
|
BinarySink_UPCAST(&term->inbuf_bs), false, 0, term);
|
||||||
bufchain_init(&term->printer_buf);
|
bufchain_init(&term->printer_buf);
|
||||||
term->printing = term->only_printing = false;
|
term->printing = term->only_printing = false;
|
||||||
term->print_job = NULL;
|
term->print_job = NULL;
|
||||||
@ -1736,6 +1739,7 @@ void term_free(Terminal *term)
|
|||||||
term->beephead = beep->next;
|
term->beephead = beep->next;
|
||||||
sfree(beep);
|
sfree(beep);
|
||||||
}
|
}
|
||||||
|
stripctrl_free(term->inbuf_scc);
|
||||||
bufchain_clear(&term->inbuf);
|
bufchain_clear(&term->inbuf);
|
||||||
if(term->print_job)
|
if(term->print_job)
|
||||||
printer_finish_job(term->print_job);
|
printer_finish_job(term->print_job);
|
||||||
@ -6775,7 +6779,7 @@ size_t term_data(Terminal *term, bool is_stderr, const void *data, size_t len)
|
|||||||
|
|
||||||
static void term_data_untrusted(Terminal *term, const void *data, size_t len)
|
static void term_data_untrusted(Terminal *term, const void *data, size_t len)
|
||||||
{
|
{
|
||||||
sanitise_term_data(&term->inbuf, data, len);
|
put_data(term->inbuf_scc, data, len);
|
||||||
term_added_data(term);
|
term_added_data(term);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,6 +100,9 @@ struct terminal_tag {
|
|||||||
termchar basic_erase_char, erase_char;
|
termchar basic_erase_char, erase_char;
|
||||||
|
|
||||||
bufchain inbuf; /* terminal input buffer */
|
bufchain inbuf; /* terminal input buffer */
|
||||||
|
bufchain_sink inbuf_bs;
|
||||||
|
StripCtrlChars *inbuf_scc;
|
||||||
|
|
||||||
pos curs; /* cursor */
|
pos curs; /* cursor */
|
||||||
pos savecurs; /* saved cursor position */
|
pos savecurs; /* saved cursor position */
|
||||||
int marg_t, marg_b; /* scroll margins */
|
int marg_t, marg_b; /* scroll margins */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user