X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/3cb37e024bb69171703f0fe05cf6b131008f8460..274186e868133a9f79843edebbf01b0f0e61330a:/terminal.c diff --git a/terminal.c b/terminal.c index 7aa0b652..abb06e2a 100644 --- a/terminal.c +++ b/terminal.c @@ -1538,6 +1538,8 @@ Terminal *term_init(Conf *myconf, struct unicode_data *ucsdata, term->selstate = NO_SELECTION; term->curstype = 0; + term_copy_stuff_from_conf(term); + term->screen = term->alt_screen = term->scrollback = NULL; term->tempsblines = 0; term->alt_sblines = 0; @@ -1576,8 +1578,6 @@ Terminal *term_init(Conf *myconf, struct unicode_data *ucsdata, term->basic_erase_char.cc_next = 0; term->erase_char = term->basic_erase_char; - term_copy_stuff_from_conf(term); - return term; } @@ -6604,7 +6604,7 @@ int term_get_userpass_input(Terminal *term, prompts_t *p, { int i; for (i = 0; i < (int)p->n_prompts; i++) - memset(p->prompts[i]->result, 0, p->prompts[i]->result_len); + prompt_set_result(p->prompts[i], ""); } } @@ -6631,8 +6631,8 @@ int term_get_userpass_input(Terminal *term, prompts_t *p, case 10: case 13: term_data(term, 0, "\r\n", 2); + prompt_ensure_result_size(pr, s->pos + 1); pr->result[s->pos] = '\0'; - pr->result[pr->result_len - 1] = '\0'; /* go to next prompt, if any */ s->curr_prompt++; s->done_prompt = 0; @@ -6667,10 +6667,9 @@ int term_get_userpass_input(Terminal *term, prompts_t *p, * when we're doing password input, because some people * have control characters in their passwords. */ - if ((!pr->echo || - (c >= ' ' && c <= '~') || - ((unsigned char) c >= 160)) - && s->pos < pr->result_len - 1) { + if (!pr->echo || (c >= ' ' && c <= '~') || + ((unsigned char) c >= 160)) { + prompt_ensure_result_size(pr, s->pos + 1); pr->result[s->pos++] = c; if (pr->echo) term_data(term, 0, &c, 1);