From f087d7e5eab877d8e2fd07020bdb4cce561e9fe6 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Mon, 27 May 2019 13:07:48 +0200 Subject: [PATCH] lic: Remove unique_ptr in LicenseChecker to avoid crash on destruction --- src/lib_license/LicenseChecker.cpp | 6 +++--- src/lib_license/LicenseChecker.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib_license/LicenseChecker.cpp b/src/lib_license/LicenseChecker.cpp index e50fde1d..0b8a94d5 100644 --- a/src/lib_license/LicenseChecker.cpp +++ b/src/lib_license/LicenseChecker.cpp @@ -17,7 +17,7 @@ #include "PublicKey.h" std::string LicenseChecker::s_encodeKey; -std::unique_ptr LicenseChecker::s_publicKey; +Botan::RSA_PublicKey* LicenseChecker::s_publicKey = nullptr; std::unique_ptr LicenseChecker::s_currentLicense; void LicenseChecker::setEncodeKey(const std::string& key) @@ -212,7 +212,7 @@ LicenseChecker::LicenseState LicenseChecker::checkLicense(const License& license try { - Botan::PK_Verifier verifier(*s_publicKey.get(), "EMSA4(SHA-256)"); + Botan::PK_Verifier verifier(*s_publicKey, "EMSA4(SHA-256)"); Botan::DataSource_Memory in(message); Botan::byte buffer[4096] = { 0 }; @@ -331,6 +331,6 @@ bool LicenseChecker::createPublicKey(Botan::RSA_PublicKey *rsaPublicKey) return false; } - s_publicKey = std::unique_ptr(rsaPublicKey); + s_publicKey = rsaPublicKey; return true; } diff --git a/src/lib_license/LicenseChecker.h b/src/lib_license/LicenseChecker.h index c68fda8a..7fd0b45e 100644 --- a/src/lib_license/LicenseChecker.h +++ b/src/lib_license/LicenseChecker.h @@ -10,7 +10,6 @@ namespace Botan { class RSA_PublicKey; - class AutoSeeded_RNG; } class LicenseChecker @@ -53,7 +52,7 @@ private: static bool createPublicKey(Botan::RSA_PublicKey *rsaPublicKey); static std::string s_encodeKey; - static std::unique_ptr s_publicKey; + static Botan::RSA_PublicKey* s_publicKey; // Intentional memory leak, because destruction can cause crash static std::unique_ptr s_currentLicense; };