upstream: prefix keyboard interactive prompts with (user@host) to
make it easier to determine which connection they are associated with in cases like scp -3, ProxyJump, etc. bz#3224 ok dtucker OpenBSD-Commit-ID: 67e6189b04b46c867662f8a6759cf3ecb5f59170
This commit is contained in:
parent
2992e4e701
commit
5442b491d0
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sshconnect2.c,v 1.334 2020/11/08 22:37:24 djm Exp $ */
|
/* $OpenBSD: sshconnect2.c,v 1.335 2020/11/13 04:53:12 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
||||||
* Copyright (c) 2008 Damien Miller. All rights reserved.
|
* Copyright (c) 2008 Damien Miller. All rights reserved.
|
||||||
|
@ -1886,15 +1886,15 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
|
||||||
{
|
{
|
||||||
Authctxt *authctxt = ssh->authctxt;
|
Authctxt *authctxt = ssh->authctxt;
|
||||||
char *name = NULL, *inst = NULL, *lang = NULL, *prompt = NULL;
|
char *name = NULL, *inst = NULL, *lang = NULL, *prompt = NULL;
|
||||||
char *response = NULL;
|
char *display_prompt = NULL, *response = NULL;
|
||||||
u_char echo = 0;
|
u_char echo = 0;
|
||||||
u_int num_prompts, i;
|
u_int num_prompts, i;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
debug2("input_userauth_info_req");
|
debug2_f("entering");
|
||||||
|
|
||||||
if (authctxt == NULL)
|
if (authctxt == NULL)
|
||||||
fatal("input_userauth_info_req: no authentication context");
|
fatal_f("no authentication context");
|
||||||
|
|
||||||
authctxt->info_req_seen = 1;
|
authctxt->info_req_seen = 1;
|
||||||
|
|
||||||
|
@ -1919,17 +1919,21 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
|
||||||
(r = sshpkt_put_u32(ssh, num_prompts)) != 0)
|
(r = sshpkt_put_u32(ssh, num_prompts)) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
debug2("input_userauth_info_req: num_prompts %d", num_prompts);
|
debug2_f("num_prompts %d", num_prompts);
|
||||||
for (i = 0; i < num_prompts; i++) {
|
for (i = 0; i < num_prompts; i++) {
|
||||||
if ((r = sshpkt_get_cstring(ssh, &prompt, NULL)) != 0 ||
|
if ((r = sshpkt_get_cstring(ssh, &prompt, NULL)) != 0 ||
|
||||||
(r = sshpkt_get_u8(ssh, &echo)) != 0)
|
(r = sshpkt_get_u8(ssh, &echo)) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
response = read_passphrase(prompt, echo ? RP_ECHO : 0);
|
xasprintf(&display_prompt, "(%s@%s) %s",
|
||||||
|
authctxt->server_user, options.host_key_alias ?
|
||||||
|
options.host_key_alias : authctxt->host, prompt);
|
||||||
|
response = read_passphrase(display_prompt, echo ? RP_ECHO : 0);
|
||||||
if ((r = sshpkt_put_cstring(ssh, response)) != 0)
|
if ((r = sshpkt_put_cstring(ssh, response)) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
freezero(response, strlen(response));
|
freezero(response, strlen(response));
|
||||||
free(prompt);
|
free(prompt);
|
||||||
response = prompt = NULL;
|
free(display_prompt);
|
||||||
|
display_prompt = response = prompt = NULL;
|
||||||
}
|
}
|
||||||
/* done with parsing incoming message. */
|
/* done with parsing incoming message. */
|
||||||
if ((r = sshpkt_get_end(ssh)) != 0 ||
|
if ((r = sshpkt_get_end(ssh)) != 0 ||
|
||||||
|
@ -1940,6 +1944,7 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
|
||||||
if (response)
|
if (response)
|
||||||
freezero(response, strlen(response));
|
freezero(response, strlen(response));
|
||||||
free(prompt);
|
free(prompt);
|
||||||
|
free(display_prompt);
|
||||||
free(name);
|
free(name);
|
||||||
free(inst);
|
free(inst);
|
||||||
free(lang);
|
free(lang);
|
||||||
|
|
Loading…
Reference in New Issue