Skip to content

Commit

Permalink
SSH: use the port number as well for known_known checks
Browse files Browse the repository at this point in the history
... if the libssh2 version is new enough.

Bug: http://curl.haxx.se/bug/view.cgi?id=1448
  • Loading branch information
Nobuhiro Ban authored and bagder committed Nov 9, 2014
1 parent 5d42700 commit 18e1a30
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions lib/ssh.c
Expand Up @@ -99,6 +99,13 @@
# endif
#endif

/* Feature detection based on version numbers to better work with
non-configure platforms */
#if LIBSSH2_VERSION_NUM >= 0x010206
/* libssh2_knownhost_checkp was added in 1.2.6 */
#define HAVE_LIBSSH2_KNOWNHOST_CHECKP
#endif

#ifndef PATH_MAX
#define PATH_MAX 1024 /* just an extra precaution since there are systems that
have their definition hidden well */
Expand Down Expand Up @@ -546,13 +553,25 @@ static CURLcode ssh_knownhost(struct connectdata *conn)
keybit = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
LIBSSH2_KNOWNHOST_KEY_SSHRSA:LIBSSH2_KNOWNHOST_KEY_SSHDSS;

#ifdef HAVE_LIBSSH2_KNOWNHOST_CHECKP
keycheck = libssh2_knownhost_checkp(sshc->kh,
conn->host.name,
(conn->remote_port != PORT_SSH)?
conn->remote_port:-1,
remotekey, keylen,
LIBSSH2_KNOWNHOST_TYPE_PLAIN|
LIBSSH2_KNOWNHOST_KEYENC_RAW|
keybit,
&host);
#else
keycheck = libssh2_knownhost_check(sshc->kh,
conn->host.name,
remotekey, keylen,
LIBSSH2_KNOWNHOST_TYPE_PLAIN|
LIBSSH2_KNOWNHOST_KEYENC_RAW|
keybit,
&host);
#endif

infof(data, "SSH host check: %d, key: %s\n", keycheck,
(keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH)?
Expand Down

0 comments on commit 18e1a30

Please sign in to comment.