]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixed SSH known hosts checking with older versions of libssh
authorMaria Matejka <mq@ucw.cz>
Wed, 12 Oct 2022 08:52:53 +0000 (10:52 +0200)
committerMaria Matejka <mq@ucw.cz>
Wed, 12 Oct 2022 09:01:38 +0000 (11:01 +0200)
configure.ac
sysdep/unix/io.c

index 330add8798a085038817b3756397f2d1654e6018..f942ec1bc502ca364de490758ab22c18891a6ff1 100644 (file)
@@ -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
index fb25d5d82112e287afe62dd1e9aecb611768388b..c91bd597e839e7e28931ebafbcc9c2310d4ea497 100644 (file)
@@ -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))
       {