[tor/master] Do not leak a reference to "slot" when decoding private key.

commit f46a7eafb88494922f331d198500f94dee0a6d8e Author: Nick Mathewson <nickm@torproject.org> Date: Wed Aug 29 15:17:47 2018 -0400 Do not leak a reference to "slot" when decoding private key. --- src/lib/crypt_ops/crypto_rsa_nss.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/crypt_ops/crypto_rsa_nss.c b/src/lib/crypt_ops/crypto_rsa_nss.c index 517faa5c7..b6d8bb647 100644 --- a/src/lib/crypt_ops/crypto_rsa_nss.c +++ b/src/lib/crypt_ops/crypto_rsa_nss.c @@ -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; }
participants (1)
-
nickm@torproject.org