aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-02-19 18:04:46 -0800
committerPieter Wuille <pieter.wuille@gmail.com>2012-02-19 18:04:46 -0800
commit49355d999303cf93df68ee63ef6ee32bcf4890d2 (patch)
tree74a96fce59f4ff9a0d8ef5c4fe7f6f6c681e9712
parent8a949dd6c3ce8161967330ebabf8ba021c0a6295 (diff)
parenta09f101f147f2313bc727371f8f1e44dc886d330 (diff)
downloadbitcoin-49355d999303cf93df68ee63ef6ee32bcf4890d2.tar.xz
Merge pull request #868 from sipa/fix_650
Fix #650: CKey::SetSecret BIGNUM leak
-rw-r--r--src/key.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/key.h b/src/key.h
index 9e92897e26..a57143b7d9 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)