mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-10 01:48:00 +00:00
Handle more gracefully the possibility of a keyboard-interactive
prompts packet containing no actual prompts (perhaps due to odd server organisation, or perhaps so it can print a banner message and do nothing else). Previously, the get_userpass_input functions always returned failure when in '-batch' mode, even in this case where no actual input would be required. [originally from svn r8490]
This commit is contained in:
parent
80623557c6
commit
d0661ca94e
@ -344,7 +344,7 @@ int console_get_userpass_input(prompts_t *p, unsigned char *in, int inlen)
|
|||||||
memset(p->prompts[i]->result, 0, p->prompts[i]->result_len);
|
memset(p->prompts[i]->result, 0, p->prompts[i]->result_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (console_batch_mode)
|
if (p->n_prompts && console_batch_mode)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -318,14 +318,31 @@ int console_get_userpass_input(prompts_t *p, unsigned char *in, int inlen)
|
|||||||
memset(p->prompts[i]->result, 0, p->prompts[i]->result_len);
|
memset(p->prompts[i]->result, 0, p->prompts[i]->result_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (console_batch_mode)
|
/*
|
||||||
return 0;
|
* The prompts_t might contain a message to be displayed but no
|
||||||
|
* actual prompt. More usually, though, it will contain
|
||||||
|
* questions that the user needs to answer, in which case we
|
||||||
|
* need to ensure that we're able to get the answers.
|
||||||
|
*/
|
||||||
|
if (p->n_prompts) {
|
||||||
|
if (console_batch_mode)
|
||||||
|
return 0;
|
||||||
|
hin = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
|
if (hin == INVALID_HANDLE_VALUE) {
|
||||||
|
fprintf(stderr, "Cannot get standard input handle\n");
|
||||||
|
cleanup_exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hin = GetStdHandle(STD_INPUT_HANDLE);
|
/*
|
||||||
hout = GetStdHandle(STD_OUTPUT_HANDLE);
|
* And if we have anything to print, we need standard output.
|
||||||
if (hin == INVALID_HANDLE_VALUE || hout == INVALID_HANDLE_VALUE) {
|
*/
|
||||||
fprintf(stderr, "Cannot get standard input/output handles\n");
|
if ((p->name_reqd && p->name) || p->instruction || p->n_prompts) {
|
||||||
cleanup_exit(1);
|
hout = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
|
if (hout == INVALID_HANDLE_VALUE) {
|
||||||
|
fprintf(stderr, "Cannot get standard output handle\n");
|
||||||
|
cleanup_exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user