]> granicus.if.org Git - pdns/commitdiff
Fix a memory leak when loading an RSA key with an invalid modulus
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 11 Oct 2017 13:28:04 +0000 (15:28 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 27 Nov 2017 22:58:32 +0000 (23:58 +0100)
pdns/opensslsigners.cc

index 051734aba9e82fe409e64144912c1e577b141bcb..8e3bb547bd42528ff093f218e5fd144e531f039f 100644 (file)
@@ -474,7 +474,7 @@ void OpenSSLRSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent& drc, std::map
   if (iqmp == NULL) {
     RSA_free(key);
     BN_clear_free(dmq1);
-    BN_clear_free(iqmp);
+    BN_clear_free(dmp1);
     throw runtime_error(getName()+" allocation of BIGNUM iqmp failed");
   }
   RSA_set0_crt_params(key, dmp1, dmq1, iqmp);
@@ -562,6 +562,7 @@ void OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString(const std::string& input)
   BIGNUM *n = BN_bin2bn((unsigned char*)modulus.c_str(), modulus.length(), NULL);
   if (!n) {
     RSA_free(key);
+    BN_clear_free(e);
     throw runtime_error(getName()+" error loading n value of public key");
   }