Do not leak a reference to "slot" when decoding private key.

This commit is contained in:
Nick Mathewson 2018-08-29 15:17:47 -04:00
parent 36f3bdac03
commit f46a7eafb8

View File

@ -683,6 +683,9 @@ crypto_pk_asn1_decode_private(const char *str, size_t len)
{
tor_assert(str);
tor_assert(len < INT_MAX);
PK11SlotInfo *slot = PK11_GetBestSlot(CKM_RSA_PKCS, NULL);
if (!slot)
return NULL;
SECKEYPrivateKeyInfo info = {
.algorithm = {
@ -699,7 +702,6 @@ crypto_pk_asn1_decode_private(const char *str, size_t len)
}
};
PK11SlotInfo *slot = PK11_GetBestSlot(CKM_RSA_PKCS, NULL);
SECStatus s;
SECKEYPrivateKey *seckey = NULL;
@ -722,5 +724,8 @@ crypto_pk_asn1_decode_private(const char *str, size_t len)
crypto_nss_log_errors(LOG_WARN, "decoding an RSA private key");
}
if (slot)
PK11_FreeSlot(slot);
return output;
}