Use GooString for publicKey, cert_serial, cert_der
diff --git a/poppler/CertificateInfo.cc b/poppler/CertificateInfo.cc
index e10bfdd..8d71ae0 100644
--- a/poppler/CertificateInfo.cc
+++ b/poppler/CertificateInfo.cc
@@ -16,32 +16,23 @@
#include <stdlib.h>
X509CertificateInfo::PublicKeyInfo::PublicKeyInfo() :
- publicKey(nullptr),
publicKeyType(OTHERKEY),
publicKeyStrength(0)
{
}
-X509CertificateInfo::PublicKeyInfo::~PublicKeyInfo()
-{
- delete publicKey;
-}
-
X509CertificateInfo::PublicKeyInfo::PublicKeyInfo(X509CertificateInfo::PublicKeyInfo &&other)
{
- publicKey = other.publicKey;
+ publicKey = std::move(other.publicKey);
publicKeyType = other.publicKeyType;
publicKeyStrength = other.publicKeyStrength;
- other.publicKey = nullptr;
}
X509CertificateInfo::PublicKeyInfo &X509CertificateInfo::PublicKeyInfo::operator=(X509CertificateInfo::PublicKeyInfo &&other)
{
- delete publicKey;
- publicKey = other.publicKey;
+ publicKey = std::move(other.publicKey);
publicKeyType = other.publicKeyType;
publicKeyStrength = other.publicKeyStrength;
- other.publicKey = nullptr;
return *this;
}
@@ -91,19 +82,13 @@
}
X509CertificateInfo::X509CertificateInfo() :
- cert_serial(nullptr),
- cert_der(nullptr),
ku_extensions(KU_NONE),
cert_version(-1),
is_self_signed(false)
{
}
-X509CertificateInfo::~X509CertificateInfo()
-{
- delete cert_serial;
- delete cert_der;
-}
+X509CertificateInfo::~X509CertificateInfo() = default;
int X509CertificateInfo::getVersion() const
{
@@ -112,7 +97,7 @@
const GooString &X509CertificateInfo::getSerialNumber() const
{
- return *cert_serial;
+ return cert_serial;
}
const X509CertificateInfo::EntityInfo &X509CertificateInfo::getIssuerInfo() const
@@ -142,7 +127,7 @@
const GooString &X509CertificateInfo::getCertificateDER() const
{
- return *cert_der;
+ return cert_der;
}
bool X509CertificateInfo::getIsSelfSigned() const
@@ -155,10 +140,9 @@
cert_version = version;
}
-void X509CertificateInfo::setSerialNumber(GooString *serialNumber)
+void X509CertificateInfo::setSerialNumber(const GooString &serialNumber)
{
- delete cert_serial;
- cert_serial = serialNumber;
+ cert_serial.Set(&serialNumber);
}
void X509CertificateInfo::setIssuerInfo(EntityInfo &&issuerInfo)
@@ -186,10 +170,9 @@
ku_extensions = keyUsages;
}
-void X509CertificateInfo::setCertificateDER(GooString *certDer)
+void X509CertificateInfo::setCertificateDER(const GooString &certDer)
{
- delete cert_der;
- cert_der = certDer;
+ cert_der.Set(&certDer);
}
void X509CertificateInfo::setIsSelfSigned(bool isSelfSigned)
diff --git a/poppler/CertificateInfo.h b/poppler/CertificateInfo.h
index 2fed918..30b6204 100644
--- a/poppler/CertificateInfo.h
+++ b/poppler/CertificateInfo.h
@@ -13,6 +13,7 @@
#ifndef CERTIFICATEINFO_H
#define CERTIFICATEINFO_H
+#include <memory>
#include <time.h>
#include "goo/GooString.h"
@@ -44,7 +45,6 @@
struct PublicKeyInfo {
PublicKeyInfo();
- ~PublicKeyInfo();
PublicKeyInfo(PublicKeyInfo &&);
PublicKeyInfo &operator=(PublicKeyInfo &&);
@@ -52,7 +52,7 @@
PublicKeyInfo(const PublicKeyInfo &) = delete;
PublicKeyInfo &operator=(const PublicKeyInfo &) = delete;
- GooString *publicKey;
+ GooString publicKey;
PublicKeyType publicKeyType;
unsigned int publicKeyStrength; // in bits
};
@@ -93,13 +93,13 @@
/* SETTERS */
void setVersion(int);
- void setSerialNumber(GooString *);
+ void setSerialNumber(const GooString &);
void setIssuerInfo(EntityInfo &&);
void setValidity(Validity);
void setSubjectInfo(EntityInfo &&);
void setPublicKeyInfo(PublicKeyInfo &&);
void setKeyUsageExtensions(unsigned int);
- void setCertificateDER(GooString *);
+ void setCertificateDER(const GooString &);
void setIsSelfSigned(bool);
private:
@@ -110,8 +110,8 @@
EntityInfo subject_info;
PublicKeyInfo public_key_info;
Validity cert_validity;
- GooString *cert_serial;
- GooString *cert_der;
+ GooString cert_serial;
+ GooString cert_der;
unsigned int ku_extensions;
int cert_version;
bool is_self_signed;
diff --git a/poppler/SignatureHandler.cc b/poppler/SignatureHandler.cc
index 9c739d0..1cbe008 100644
--- a/poppler/SignatureHandler.cc
+++ b/poppler/SignatureHandler.cc
@@ -116,10 +116,10 @@
return info;
}
-static GooString *SECItemToGooString(const SECItem &secItem)
+static GooString SECItemToGooString(const SECItem &secItem)
{
// TODO do we need to handle secItem.type;
- return new GooString((const char *)secItem.data, secItem.len);
+ return GooString((const char *)secItem.data, secItem.len);
}
X509CertificateInfo *SignatureHandler::getCertificateInfo() const
diff --git a/qt5/src/poppler-form.cc b/qt5/src/poppler-form.cc
index b5d1bb2..7280c36 100644
--- a/qt5/src/poppler-form.cc
+++ b/qt5/src/poppler-form.cc
@@ -969,7 +969,7 @@
certPriv->validity_end = QDateTime::fromTime_t(certValidity.notAfter, Qt::UTC);
const X509CertificateInfo::PublicKeyInfo &pkInfo = ci->getPublicKeyInfo();
- certPriv->public_key = QByteArray(pkInfo.publicKey->c_str(), pkInfo.publicKey->getLength());
+ certPriv->public_key = QByteArray(pkInfo.publicKey.c_str(), pkInfo.publicKey.getLength());
certPriv->public_key_type = static_cast<int>(pkInfo.publicKeyType);
certPriv->public_key_strength = pkInfo.publicKeyStrength;