version 1.117.2.1, 2004/08/19 04:13:27 |
version 1.117.2.2, 2005/03/10 17:15:04 |
|
|
static int |
static int |
confirm_key(Identity *id) |
confirm_key(Identity *id) |
{ |
{ |
char *p, prompt[1024]; |
char *p; |
int ret = -1; |
int ret = -1; |
|
|
p = key_fingerprint(id->key, SSH_FP_MD5, SSH_FP_HEX); |
p = key_fingerprint(id->key, SSH_FP_MD5, SSH_FP_HEX); |
snprintf(prompt, sizeof(prompt), "Allow use of key %s?\n" |
if (ask_permission("Allow use of key %s?\nKey fingerprint %s.", |
"Key fingerprint %s.", id->comment, p); |
id->comment, p)) |
|
ret = 0; |
xfree(p); |
xfree(p); |
p = read_passphrase(prompt, RP_ALLOW_EOF); |
|
if (p != NULL) { |
|
/* |
|
* Accept empty responses and responses consisting |
|
* of the word "yes" as affirmative. |
|
*/ |
|
if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0) |
|
ret = 0; |
|
xfree(p); |
|
} |
|
return (ret); |
return (ret); |
} |
} |
|
|
|
|
sock = socket(AF_UNIX, SOCK_STREAM, 0); |
sock = socket(AF_UNIX, SOCK_STREAM, 0); |
if (sock < 0) { |
if (sock < 0) { |
perror("socket"); |
perror("socket"); |
|
*socket_name = '\0'; /* Don't unlink any existing file */ |
cleanup_exit(1); |
cleanup_exit(1); |
} |
} |
memset(&sunaddr, 0, sizeof(sunaddr)); |
memset(&sunaddr, 0, sizeof(sunaddr)); |
|
|
strlcpy(sunaddr.sun_path, socket_name, sizeof(sunaddr.sun_path)); |
strlcpy(sunaddr.sun_path, socket_name, sizeof(sunaddr.sun_path)); |
if (bind(sock, (struct sockaddr *) & sunaddr, sizeof(sunaddr)) < 0) { |
if (bind(sock, (struct sockaddr *) & sunaddr, sizeof(sunaddr)) < 0) { |
perror("bind"); |
perror("bind"); |
|
*socket_name = '\0'; /* Don't unlink any existing file */ |
cleanup_exit(1); |
cleanup_exit(1); |
} |
} |
if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |
if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |