aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2019-01-29 16:16:29 -0500
committerAndreas Schneider <asn@cryptomilk.org>2019-02-07 14:22:23 +0100
commitb6d275537e99219efff44cb544854687c7e4e2e8 (patch)
treee891c9ab83d21aead0a1a96de248042696e5ab56
parente69fb89e98b769ef76525ec10bca4fd81dd17431 (diff)
downloadlibssh-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.c3
-rw-r--r--src/pki_mbedcrypto.c3
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: {