version 1.240, 2019/11/12 19:33:08 |
version 1.241, 2019/11/12 22:36:44 |
|
|
{ |
{ |
int status, pair[2], r = SSH_ERR_INTERNAL_ERROR; |
int status, pair[2], r = SSH_ERR_INTERNAL_ERROR; |
pid_t pid; |
pid_t pid; |
char *helper, *verbosity = NULL; |
char *helper, *verbosity = NULL, *fp = NULL; |
struct sshbuf *kbuf, *req, *resp; |
struct sshbuf *kbuf, *req, *resp; |
u_char version; |
u_char version; |
|
struct notifier_ctx *notifier = NULL; |
|
|
debug3("%s: start for provider %s", __func__, provider); |
debug3("%s: start for provider %s", __func__, provider); |
|
|
|
|
error("%s: send: %s", __func__, ssh_err(r)); |
error("%s: send: %s", __func__, ssh_err(r)); |
goto out; |
goto out; |
} |
} |
|
if ((fp = sshkey_fingerprint(key, SSH_FP_HASH_DEFAULT, |
|
SSH_FP_DEFAULT)) == NULL) |
|
fatal("%s: sshkey_fingerprint failed", __func__); |
|
notifier = notify_start(0, |
|
"Confirm user presence for key %s %s", sshkey_type(key), fp); |
if ((r = ssh_msg_recv(pair[0], resp)) != 0) { |
if ((r = ssh_msg_recv(pair[0], resp)) != 0) { |
error("%s: receive: %s", __func__, ssh_err(r)); |
error("%s: receive: %s", __func__, ssh_err(r)); |
goto out; |
goto out; |
} |
} |
|
notify_complete(notifier); |
|
notifier = NULL; |
if ((r = sshbuf_get_u8(resp, &version)) != 0) { |
if ((r = sshbuf_get_u8(resp, &version)) != 0) { |
error("%s: parse version: %s", __func__, ssh_err(r)); |
error("%s: parse version: %s", __func__, ssh_err(r)); |
goto out; |
goto out; |
|
|
if (errno != EINTR) |
if (errno != EINTR) |
fatal("%s: waitpid: %s", __func__, ssh_err(r)); |
fatal("%s: waitpid: %s", __func__, ssh_err(r)); |
} |
} |
|
notify_complete(notifier); |
if (!WIFEXITED(status)) { |
if (!WIFEXITED(status)) { |
error("%s: helper %s exited abnormally", __func__, helper); |
error("%s: helper %s exited abnormally", __func__, helper); |
if (r == 0) |
if (r == 0) |