From a09f101f147f2313bc727371f8f1e44dc886d330 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 19 Feb 2012 18:44:51 +0100 Subject: [PATCH] Fix #650: CKey::SetSecret BIGNUM leak --- src/key.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/key.h b/src/key.h index 9e92897e2..a57143b7d 100644 --- a/src/key.h +++ b/src/key.h @@ -141,10 +141,13 @@ public: if (vchSecret.size() != 32) throw key_error("CKey::SetSecret() : secret must be 32 bytes"); BIGNUM *bn = BN_bin2bn(&vchSecret[0],32,BN_new()); - if (bn == NULL) + if (bn == NULL) throw key_error("CKey::SetSecret() : BN_bin2bn failed"); if (!EC_KEY_regenerate_key(pkey,bn)) + { + BN_clear_free(bn); throw key_error("CKey::SetSecret() : EC_KEY_regenerate_key failed"); + } BN_clear_free(bn); fSet = true; if (fCompressed || fCompressedPubKey)