]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3193] fixed double free when using botan
authorRazvan Becheriu <razvan@isc.org>
Tue, 20 Feb 2024 08:46:26 +0000 (10:46 +0200)
committerRazvan Becheriu <razvan@isc.org>
Fri, 23 Feb 2024 18:38:52 +0000 (18:38 +0000)
src/lib/cryptolink/botan_link.cc
src/lib/cryptolink/crypto_rng.cc
src/lib/cryptolink/crypto_rng.h
src/lib/cryptolink/cryptolink.cc
src/lib/cryptolink/cryptolink.h

index 5eb0e342f02f9d1a85137b7076f216fa87395768..80fe28fd86296c24648f202a1664630f66acd901 100644 (file)
@@ -70,8 +70,6 @@ CryptoLink::initialize(CryptoLink& c) {
             isc_throw(InitializationError, "Botan error: " << ex.what());
         }
     }
-    // A not yet fixed bug makes RNG to be destroyed after memory pool...
-    atexit([]{ getCryptoLink().getRNG().reset(); });
 }
 
 std::string
index 54dacce40878bea9d7be27d668b2a938447dec0e..b67f2afb97920d9c4386a7229b221eb150fb0c52 100644 (file)
@@ -23,8 +23,7 @@ RNG::~RNG() {
 }
 
 std::vector<uint8_t>
-random(size_t len)
-{
+random(size_t len) {
     RNGPtr rng(CryptoLink::getCryptoLink().getRNG());
     return (rng->random(len));
 }
index 916321e7ca4c488c71782a0c97697319f1db437c..d840637dfb3b1bd8d7302574cb2dcb8c4c7fa301 100644 (file)
@@ -42,7 +42,7 @@ public:
     virtual std::vector<uint8_t> random(size_t len) = 0;
 
 private:
-    friend RNGPtr& CryptoLink::getRNG();
+    friend RNGPtr const& CryptoLink::getRNG() const;
 };
 
 /// \brief Generate random value. 
index 3e238b29e005ec174b1ed8db61e7e72305490aa2..8d4e2505e85aa02338a0740236c34fd9b19c8027 100644 (file)
@@ -30,8 +30,8 @@ CryptoLink::createHMAC(const void* secret, size_t secret_len,
     return (new HMAC(secret, secret_len, hash_algorithm));
 }
 
-RNGPtr&
-CryptoLink::getRNG() {
+RNGPtr const&
+CryptoLink::getRNG() const {
     return (rng_);
 }
 
index 366fa5be6d37cc890bf8b4b2a4f3d2eb8cb218cf..a702dc8da94981c15a996a3159f67df88a11cba8 100644 (file)
@@ -211,7 +211,7 @@ public:
     ///                           in a derived class
     /// \exception LibraryError if there was any unexpected exception
     ///                         in the underlying library
-    virtual RNGPtr& getRNG();
+    virtual RNGPtr const& getRNG() const;
 
 private:
     /// \brief Initialize the library