From: Amos Jeffries Date: Fri, 24 Jun 2016 12:01:31 +0000 (+1200) Subject: security_file_certgen: use std::unique_ptr instead of TidyPointer X-Git-Tag: SQUID_4_0_13~39^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cb7d9a8e19720f1d0530fc0a1c62137d593ba151;p=thirdparty%2Fsquid.git security_file_certgen: use std::unique_ptr instead of TidyPointer --- diff --git a/src/security/cert_generators/file/certificate_db.cc b/src/security/cert_generators/file/certificate_db.cc index a713e26de7..a2d577a789 100644 --- a/src/security/cert_generators/file/certificate_db.cc +++ b/src/security/cert_generators/file/certificate_db.cc @@ -11,6 +11,7 @@ #include #include +#include #include #if HAVE_SYS_STAT_H #include @@ -252,7 +253,6 @@ Ssl::CertificateDb::CertificateDb(std::string const & aDb_path, size_t aMax_db_s db_full(aDb_path + "/" + db_file), cert_full(aDb_path + "/" + cert_dir), size_full(aDb_path + "/" + size_file), - db(NULL), max_db_size(aMax_db_size), fs_block_size((aFs_block_size ? aFs_block_size : 2048)), dbLock(db_full), @@ -282,6 +282,11 @@ bool Ssl::CertificateDb::purgeCert(std::string const & key) { return true; } +/// DeAllocator functor for unique_ptr that need free(3) from the std C library +struct xfree_char { + void operator()(char *a) { xfree(a); } +}; + bool Ssl::CertificateDb::addCertAndPrivateKey(Security::CertPointer & cert, Ssl::EVP_PKEY_Pointer & pkey, std::string const & useName) { const Locker locker(dbLock, Here); load(); @@ -292,7 +297,7 @@ bool Ssl::CertificateDb::addCertAndPrivateKey(Security::CertPointer & cert, Ssl: std::string serial_string; Ssl::BIGNUM_Pointer serial(ASN1_INTEGER_to_BN(ai, NULL)); { - TidyPointer hex_bn(BN_bn2hex(serial.get())); + std::unique_ptr hex_bn(BN_bn2hex(serial.get())); serial_string = std::string(hex_bn.get()); } row.setValue(cnlSerial, serial_string.c_str()); @@ -305,7 +310,7 @@ bool Ssl::CertificateDb::addCertAndPrivateKey(Security::CertPointer & cert, Ssl: } { - TidyPointer subject(X509_NAME_oneline(X509_get_subject_name(cert.get()), NULL, 0)); + std::unique_ptr subject(X509_NAME_oneline(X509_get_subject_name(cert.get()), nullptr, 0)); Security::CertPointer findCert; Ssl::EVP_PKEY_Pointer findPkey; if (pure_find(useName.empty() ? subject.get() : useName, findCert, findPkey)) { @@ -348,7 +353,7 @@ bool Ssl::CertificateDb::addCertAndPrivateKey(Security::CertPointer & cert, Ssl: if (!useName.empty()) row.setValue(cnlName, useName.c_str()); else { - TidyPointer subject(X509_NAME_oneline(X509_get_subject_name(cert.get()), NULL, 0)); + std::unique_ptr subject(X509_NAME_oneline(X509_get_subject_name(cert.get()), nullptr, 0)); row.setValue(cnlName, subject.get()); }