summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-10-12 10:52:53 +0200
committerMaria Matejka <mq@ucw.cz>2022-10-12 11:01:38 +0200
commitf182771f96280115e839315d9d3e5aa7c9343d54 (patch)
tree51b7f28a22259189d4df8a9c820e155515f7542e
parent2d99f1277317040d05cca7b8f04b43a66f6fe643 (diff)
Fixed SSH known hosts checking with older versions of libssh
-rw-r--r--configure.ac6
-rw-r--r--sysdep/unix/io.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 330add87..f942ec1b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,6 +276,12 @@ if test "$enable_libssh" != no ; then
enable_libssh=no
fi
fi
+
+ AC_CHECK_LIB([ssh], [ssh_session_is_known_server], [ssh_old_server_validation_api=no], [ssh_old_server_validation_api=yes])
+
+ if test "$ssh_old_server_validation_api" = yes; then
+ AC_DEFINE([HAVE_SSH_OLD_SERVER_VALIDATION_API], [1], [Define to 1 if ssh_session_is_known_server isn't defined])
+ fi
fi
if test "$enable_mpls_kernel" != no ; then
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index fb25d5d8..c91bd597 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -1151,6 +1151,16 @@ sk_ssh_connect(sock *s)
{
int server_identity_is_ok = 1;
+#ifdef HAVE_SSH_OLD_SERVER_VALIDATION_API
+#define ssh_session_is_known_server ssh_is_server_known
+#define SSH_KNOWN_HOSTS_OK SSH_SERVER_KNOWN_OK
+#define SSH_KNOWN_HOSTS_UNKNOWN SSH_SERVER_NOT_KNOWN
+#define SSH_KNOWN_HOSTS_CHANGED SSH_SERVER_KNOWN_CHANGED
+#define SSH_KNOWN_HOSTS_NOT_FOUND SSH_SERVER_FILE_NOT_FOUND
+#define SSH_KNOWN_HOSTS_ERROR SSH_SERVER_ERROR
+#define SSH_KNOWN_HOSTS_OTHER SSH_SERVER_FOUND_OTHER
+#endif
+
/* Check server identity */
switch (ssh_session_is_known_server(s->ssh->session))
{