summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2015-05-24 22:33:55 +0200
committerMichał Górny <mgorny@gentoo.org>2015-05-27 20:36:53 +0200
commit2629fc874da258d76a63a99566a5ba457c9d5d30 (patch)
tree3239fc99a60f2b98b5a2a5e8d8761bb8d4a79c4e
parentf7142b5e4a9ce3f389f7851aac2fc98ce7bef764 (diff)
downloadlibgit2-2629fc874da258d76a63a99566a5ba457c9d5d30.tar.gz
cred: Check for null values when getting key from memory
The public key field is optional and as such can take NULL. Account for that and do not call strlen() on NULL values. Also assert() for non-NULL values of username & private key.
-rw-r--r--src/transports/ssh.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index 0a7422791..58f1aeb64 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -374,12 +374,15 @@ static int _git_ssh_authenticate_session(
case GIT_CREDTYPE_SSH_MEMORY: {
git_cred_ssh_key *c = (git_cred_ssh_key *)cred;
+ assert(c->username);
+ assert(c->privatekey);
+
rc = libssh2_userauth_publickey_frommemory(
session,
c->username,
strlen(c->username),
c->publickey,
- strlen(c->publickey),
+ c->publickey ? strlen(c->publickey) : 0,
c->privatekey,
strlen(c->privatekey),
c->passphrase);