1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-03-22 14:39:24 -05:00

If we got a keyboard-interactive INFO_REQUEST with an "instruction" string but

no actual prompts, we weren't displaying the former, which was wrong. We
should now (although I haven't found a server to test it against).

[originally from svn r8172]
This commit is contained in:
Jacob Nevins 2008-09-09 20:36:40 +00:00
parent 922ae38450
commit 211fdb9f46
2 changed files with 7 additions and 5 deletions

View File

@ -686,7 +686,8 @@ typedef struct {
int name_reqd; /* Display of `name' required or optional? */ int name_reqd; /* Display of `name' required or optional? */
char *instruction; /* Long description, maybe with embedded newlines */ char *instruction; /* Long description, maybe with embedded newlines */
int instr_reqd; /* Display of `instruction' required or optional? */ int instr_reqd; /* Display of `instruction' required or optional? */
size_t n_prompts; size_t n_prompts; /* May be zero (in which case display the foregoing,
* if any, and return success) */
prompt_t **prompts; prompt_t **prompts;
void *frontend; void *frontend;
void *data; /* slot for housekeeping data, managed by void *data; /* slot for housekeeping data, managed by

9
ssh.c
View File

@ -8022,7 +8022,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
s->cur_prompt->instr_reqd = TRUE; s->cur_prompt->instr_reqd = TRUE;
/* /*
* Get the prompts from the packet. * Get any prompt(s) from the packet.
*/ */
s->num_prompts = ssh_pkt_getuint32(pktin); s->num_prompts = ssh_pkt_getuint32(pktin);
for (i = 0; i < s->num_prompts; i++) { for (i = 0; i < s->num_prompts; i++) {
@ -8044,9 +8044,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
} }
/* /*
* Get the user's responses. * Display any instructions, and get the user's
* response(s).
*/ */
if (s->num_prompts) { {
int ret; /* not live over crReturn */ int ret; /* not live over crReturn */
ret = get_userpass_input(s->cur_prompt, NULL, 0); ret = get_userpass_input(s->cur_prompt, NULL, 0);
while (ret < 0) { while (ret < 0) {
@ -8068,7 +8069,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen,
} }
/* /*
* Send the responses to the server. * Send the response(s) to the server.
*/ */
s->pktout = ssh2_pkt_init(SSH2_MSG_USERAUTH_INFO_RESPONSE); s->pktout = ssh2_pkt_init(SSH2_MSG_USERAUTH_INFO_RESPONSE);
ssh2_pkt_adduint32(s->pktout, s->num_prompts); ssh2_pkt_adduint32(s->pktout, s->num_prompts);