Skip to content

Commit c6f9b33

Browse files
committed
Modify for avoid deprecated functions of libssh
ssh_get_publickey() becomes deprecated function from libssh 0.8.0. ssh_get_publickey() and ssh_write_knownhost() become deprecated functions from libssh 0.9.0.
1 parent fa3c5aa commit c6f9b33

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

src/session_client_ssh.c

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,17 +273,30 @@ int
273273
sshauth_hostkey_check(const char *hostname, ssh_session session, void *UNUSED(priv))
274274
{
275275
char *hexa = NULL;
276+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
277+
int c, ret;
278+
enum ssh_known_hosts_e state;
279+
#else
276280
int c, state, ret;
281+
#endif
277282
ssh_key srv_pubkey;
278283
unsigned char *hash_sha1 = NULL;
279284
size_t hlen;
280285
enum ssh_keytypes_e srv_pubkey_type;
281286
char answer[5];
282287
FILE *out = NULL, *in = NULL;
283288

289+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
290+
state = ssh_session_is_known_server(session);
291+
#else
284292
state = ssh_is_server_known(session);
293+
#endif
285294

295+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 8, 0))
296+
ret = ssh_get_server_publickey(session, &srv_pubkey);
297+
#else
286298
ret = ssh_get_publickey(session, &srv_pubkey);
299+
#endif
287300
if (ret < 0) {
288301
ERR("Unable to get server public key.");
289302
return -1;
@@ -300,22 +313,42 @@ sshauth_hostkey_check(const char *hostname, ssh_session session, void *UNUSED(pr
300313
hexa = ssh_get_hexa(hash_sha1, hlen);
301314

302315
switch (state) {
316+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
317+
case SSH_KNOWN_HOSTS_OK:
318+
#else
303319
case SSH_SERVER_KNOWN_OK:
320+
#endif
304321
break; /* ok */
305322

323+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
324+
case SSH_KNOWN_HOSTS_CHANGED:
325+
#else
306326
case SSH_SERVER_KNOWN_CHANGED:
327+
#endif
307328
ERR("Remote host key changed, the connection will be terminated!");
308329
goto error;
309330

331+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
332+
case SSH_KNOWN_HOSTS_OTHER:
333+
#else
310334
case SSH_SERVER_FOUND_OTHER:
335+
#endif
311336
WRN("Remote host key is not known, but a key of another type for this host is known. Continue with caution.");
312337
goto hostkey_not_known;
313338

339+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
340+
case SSH_KNOWN_HOSTS_NOT_FOUND:
341+
#else
314342
case SSH_SERVER_FILE_NOT_FOUND:
343+
#endif
315344
WRN("Could not find the known hosts file.");
316345
goto hostkey_not_known;
317346

347+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
348+
case SSH_KNOWN_HOSTS_UNKNOWN:
349+
#else
318350
case SSH_SERVER_NOT_KNOWN:
351+
#endif
319352
hostkey_not_known:
320353
#ifdef ENABLE_DNSSEC
321354
if ((srv_pubkey_type != SSH_KEYTYPE_UNKNOWN) || (srv_pubkey_type != SSH_KEYTYPE_RSA1)) {
@@ -330,7 +363,11 @@ sshauth_hostkey_check(const char *hostname, ssh_session session, void *UNUSED(pr
330363
/* DNSSEC SSHFP check successful, that's enough */
331364
if (!ret) {
332365
VRB("DNSSEC SSHFP check successful.");
366+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
367+
ssh_session_update_known_hosts(session);
368+
#else
333369
ssh_write_knownhost(session);
370+
#endif
334371
ssh_clean_pubkey_hash(&hash_sha1);
335372
ssh_string_free_char(hexa);
336373
return 0;
@@ -385,7 +422,11 @@ sshauth_hostkey_check(const char *hostname, ssh_session session, void *UNUSED(pr
385422
fflush(in);
386423
if (!strcmp("yes", answer)) {
387424
/* store the key into the host file */
425+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
426+
ret = ssh_session_update_known_hosts(session);
427+
#else
388428
ret = ssh_write_knownhost(session);
429+
#endif
389430
if (ret != SSH_OK) {
390431
WRN("Adding the known host \"%s\" failed (%s).", hostname, ssh_get_error(session));
391432
}
@@ -401,7 +442,11 @@ sshauth_hostkey_check(const char *hostname, ssh_session session, void *UNUSED(pr
401442

402443
break;
403444

445+
#if (LIBSSH_VERSION_INT >= SSH_VERSION_INT(0, 9, 0))
446+
case SSH_KNOWN_HOSTS_ERROR:
447+
#else
404448
case SSH_SERVER_ERROR:
449+
#endif
405450
ERR("SSH error: %s", ssh_get_error(session));
406451
goto error;
407452
}

0 commit comments

Comments
 (0)