version 1.237, 2013/02/22 19:13:56 |
version 1.238, 2013/05/17 00:13:14 |
|
|
xasprintf(&tmp, "exec %s", proxy_command); |
xasprintf(&tmp, "exec %s", proxy_command); |
command_string = percent_expand(tmp, "h", host, "p", strport, |
command_string = percent_expand(tmp, "h", host, "p", strport, |
"r", options.user, (char *)NULL); |
"r", options.user, (char *)NULL); |
xfree(tmp); |
free(tmp); |
|
|
/* Create pipes for communicating with the proxy. */ |
/* Create pipes for communicating with the proxy. */ |
if (pipe(pin) < 0 || pipe(pout) < 0) |
if (pipe(pin) < 0 || pipe(pout) < 0) |
|
|
close(pout[1]); |
close(pout[1]); |
|
|
/* Free the command name. */ |
/* Free the command name. */ |
xfree(command_string); |
free(command_string); |
|
|
/* Set the connection file descriptors. */ |
/* Set the connection file descriptors. */ |
packet_set_connection(pout[0], pin[1]); |
packet_set_connection(pout[0], pin[1]); |
|
|
fatal("Bogus return (%d) from select()", rc); |
fatal("Bogus return (%d) from select()", rc); |
} |
} |
|
|
xfree(fdset); |
free(fdset); |
|
|
done: |
done: |
if (result == 0 && *timeoutp > 0) { |
if (result == 0 && *timeoutp > 0) { |
|
|
debug("ssh_exchange_identification: %s", buf); |
debug("ssh_exchange_identification: %s", buf); |
} |
} |
server_version_string = xstrdup(buf); |
server_version_string = xstrdup(buf); |
xfree(fdset); |
free(fdset); |
|
|
/* |
/* |
* Check that the versions match. In future this might accept |
* Check that the versions match. In future this might accept |
|
|
ret = 0; |
ret = 0; |
if (p && strncasecmp(p, "yes", 3) == 0) |
if (p && strncasecmp(p, "yes", 3) == 0) |
ret = 1; |
ret = 1; |
if (p) |
free(p); |
xfree(p); |
|
if (ret != -1) |
if (ret != -1) |
return ret; |
return ret; |
} |
} |
|
|
ra = key_fingerprint(host_key, SSH_FP_MD5, |
ra = key_fingerprint(host_key, SSH_FP_MD5, |
SSH_FP_RANDOMART); |
SSH_FP_RANDOMART); |
logit("Host key fingerprint is %s\n%s\n", fp, ra); |
logit("Host key fingerprint is %s\n%s\n", fp, ra); |
xfree(ra); |
free(ra); |
xfree(fp); |
free(fp); |
} |
} |
break; |
break; |
case HOST_NEW: |
case HOST_NEW: |
|
|
options.visual_host_key ? "\n" : "", |
options.visual_host_key ? "\n" : "", |
options.visual_host_key ? ra : "", |
options.visual_host_key ? ra : "", |
msg2); |
msg2); |
xfree(ra); |
free(ra); |
xfree(fp); |
free(fp); |
if (!confirm(msg)) |
if (!confirm(msg)) |
goto fail; |
goto fail; |
} |
} |
|
|
} |
} |
} |
} |
|
|
xfree(ip); |
free(ip); |
xfree(host); |
free(host); |
if (host_hostkeys != NULL) |
if (host_hostkeys != NULL) |
free_hostkeys(host_hostkeys); |
free_hostkeys(host_hostkeys); |
if (ip_hostkeys != NULL) |
if (ip_hostkeys != NULL) |
|
|
} |
} |
if (raw_key != NULL) |
if (raw_key != NULL) |
key_free(raw_key); |
key_free(raw_key); |
xfree(ip); |
free(ip); |
xfree(host); |
free(host); |
if (host_hostkeys != NULL) |
if (host_hostkeys != NULL) |
free_hostkeys(host_hostkeys); |
free_hostkeys(host_hostkeys); |
if (ip_hostkeys != NULL) |
if (ip_hostkeys != NULL) |
|
|
|
|
fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); |
fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX); |
debug("Server host key: %s %s", key_type(host_key), fp); |
debug("Server host key: %s %s", key_type(host_key), fp); |
xfree(fp); |
free(fp); |
|
|
/* XXX certs are not yet supported for DNS */ |
/* XXX certs are not yet supported for DNS */ |
if (!key_is_cert(host_key) && options.verify_host_key_dns && |
if (!key_is_cert(host_key) && options.verify_host_key_dns && |
|
|
ssh_kex(host, hostaddr); |
ssh_kex(host, hostaddr); |
ssh_userauth1(local_user, server_user, host, sensitive); |
ssh_userauth1(local_user, server_user, host, sensitive); |
} |
} |
xfree(local_user); |
free(local_user); |
} |
} |
|
|
void |
void |
|
|
strlcpy(padded, password, size); |
strlcpy(padded, password, size); |
packet_put_string(padded, size); |
packet_put_string(padded, size); |
memset(padded, 0, size); |
memset(padded, 0, size); |
xfree(padded); |
free(padded); |
} |
} |
|
|
/* print all known host keys for a given host, but skip keys of given type */ |
/* print all known host keys for a given host, but skip keys of given type */ |
|
|
key_type(found->key), fp); |
key_type(found->key), fp); |
if (options.visual_host_key) |
if (options.visual_host_key) |
logit("%s", ra); |
logit("%s", ra); |
xfree(ra); |
free(ra); |
xfree(fp); |
free(fp); |
ret = 1; |
ret = 1; |
} |
} |
return ret; |
return ret; |
|
|
key_type(host_key), fp); |
key_type(host_key), fp); |
error("Please contact your system administrator."); |
error("Please contact your system administrator."); |
|
|
xfree(fp); |
free(fp); |
} |
} |
|
|
/* |
/* |