summaryrefslogtreecommitdiff
path: root/libs/libssh2/src/knownhost.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libssh2/src/knownhost.c')
-rw-r--r--libs/libssh2/src/knownhost.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/libs/libssh2/src/knownhost.c b/libs/libssh2/src/knownhost.c
index 1caab14789..5eba6a108c 100644
--- a/libs/libssh2/src/knownhost.c
+++ b/libs/libssh2/src/knownhost.c
@@ -421,19 +421,23 @@ knownhost_check(LIBSSH2_KNOWNHOSTS *hosts,
*/
unsigned char hash[SHA_DIGEST_LENGTH];
libssh2_hmac_ctx ctx;
- libssh2_hmac_ctx_init(ctx);
+ if(!_libssh2_hmac_ctx_init(&ctx))
+ break;
if(SHA_DIGEST_LENGTH != node->name_len) {
/* the name hash length must be the sha1 size or
we can't match it */
break;
}
- libssh2_hmac_sha1_init(&ctx, (unsigned char *)node->salt,
- node->salt_len);
- libssh2_hmac_update(ctx, (unsigned char *)host,
- strlen(host));
- libssh2_hmac_final(ctx, hash);
- libssh2_hmac_cleanup(&ctx);
+ if(!_libssh2_hmac_sha1_init(&ctx,
+ node->salt, node->salt_len))
+ break;
+ if(!_libssh2_hmac_update(&ctx, host, strlen(host)) ||
+ !_libssh2_hmac_final(&ctx, hash)) {
+ _libssh2_hmac_cleanup(&ctx);
+ break;
+ }
+ _libssh2_hmac_cleanup(&ctx);
if(!memcmp(hash, node->name, SHA_DIGEST_LENGTH))
/* this is a node we're interested in */
@@ -1049,7 +1053,7 @@ knownhost_writeline(LIBSSH2_KNOWNHOSTS *hosts,
break;
}
/* otherwise fallback to default and error */
- /* FALL-THROUGH */
+ LIBSSH2_FALLTHROUGH();
default:
return _libssh2_error(hosts->session,
LIBSSH2_ERROR_METHOD_NOT_SUPPORTED,