diff options
author | Jon Simons <jon@jonsimons.org> | 2019-01-29 16:16:29 -0500 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-02-07 14:22:23 +0100 |
commit | b6d275537e99219efff44cb544854687c7e4e2e8 (patch) | |
tree | e891c9ab83d21aead0a1a96de248042696e5ab56 | |
parent | e69fb89e98b769ef76525ec10bca4fd81dd17431 (diff) | |
download | libssh-b6d275537e99219efff44cb544854687c7e4e2e8.tar.gz libssh-b6d275537e99219efff44cb544854687c7e4e2e8.tar.xz libssh-b6d275537e99219efff44cb544854687c7e4e2e8.zip |
pki: NULL check pki_signature_from_rsa_blob result
Check for a potential NULL result from `pki_signature_from_rsa_blob`
in `pki_signature_from_blob`. Otherwise the following `sig->type_c`
will result in a segfault.
Introduced in 7f83a1efae6a7da19e18268d6298fc11b4e68c57.
Signed-off-by: Jon Simons <jon@jonsimons.org>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit ccd73db90c9ff1c9e945939e78d735f97e525dae)
-rw-r--r-- | src/pki_crypto.c | 3 | ||||
-rw-r--r-- | src/pki_mbedcrypto.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/pki_crypto.c b/src/pki_crypto.c index e79d97b4..bae51b71 100644 --- a/src/pki_crypto.c +++ b/src/pki_crypto.c @@ -1681,6 +1681,9 @@ ssh_signature pki_signature_from_blob(const ssh_key pubkey, case SSH_KEYTYPE_RSA: case SSH_KEYTYPE_RSA1: sig = pki_signature_from_rsa_blob(pubkey, sig_blob, sig); + if (sig == NULL) { + return NULL; + } sig->type_c = ssh_key_signature_to_char(type, hash_type); break; case SSH_KEYTYPE_ECDSA: diff --git a/src/pki_mbedcrypto.c b/src/pki_mbedcrypto.c index ccce014c..57a4ffae 100644 --- a/src/pki_mbedcrypto.c +++ b/src/pki_mbedcrypto.c @@ -917,6 +917,9 @@ ssh_signature pki_signature_from_blob(const ssh_key pubkey, switch(type) { case SSH_KEYTYPE_RSA: sig = pki_signature_from_rsa_blob(pubkey, sig_blob, sig); + if (sig == NULL) { + return NULL; + } sig->type_c = ssh_key_signature_to_char(type, hash_type); break; case SSH_KEYTYPE_ECDSA: { |