version 1.58, 2019/11/27 05:00:17 |
version 1.59, 2019/12/06 02:55:21 |
|
|
void (*osigchld)(int); |
void (*osigchld)(int); |
|
|
if (fflush(stdout) != 0) |
if (fflush(stdout) != 0) |
error("ssh_askpass: fflush: %s", strerror(errno)); |
error("%s: fflush: %s", __func__, strerror(errno)); |
if (askpass == NULL) |
if (askpass == NULL) |
fatal("internal error: askpass undefined"); |
fatal("internal error: askpass undefined"); |
if (pipe(p) == -1) { |
if (pipe(p) == -1) { |
error("ssh_askpass: pipe: %s", strerror(errno)); |
error("%s: pipe: %s", __func__, strerror(errno)); |
return NULL; |
return NULL; |
} |
} |
osigchld = signal(SIGCHLD, SIG_DFL); |
osigchld = signal(SIGCHLD, SIG_DFL); |
if ((pid = fork()) == -1) { |
if ((pid = fork()) == -1) { |
error("ssh_askpass: fork: %s", strerror(errno)); |
error("%s: fork: %s", __func__, strerror(errno)); |
signal(SIGCHLD, osigchld); |
signal(SIGCHLD, osigchld); |
return NULL; |
return NULL; |
} |
} |
if (pid == 0) { |
if (pid == 0) { |
close(p[0]); |
close(p[0]); |
if (dup2(p[1], STDOUT_FILENO) == -1) |
if (dup2(p[1], STDOUT_FILENO) == -1) |
fatal("ssh_askpass: dup2: %s", strerror(errno)); |
fatal("%s: dup2: %s", __func__, strerror(errno)); |
setenv("SSH_ASKPASS_PROMPT", "confirm", 1); /* hint to UI */ |
setenv("SSH_ASKPASS_PROMPT", "confirm", 1); /* hint to UI */ |
execlp(askpass, askpass, msg, (char *)NULL); |
execlp(askpass, askpass, msg, (char *)NULL); |
fatal("ssh_askpass: exec(%s): %s", askpass, strerror(errno)); |
fatal("%s: exec(%s): %s", __func__, askpass, strerror(errno)); |
} |
} |
close(p[1]); |
close(p[1]); |
|
|