changeset 94:f1ebab8639dc

Do not save the x509 cert as a member variable
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 21 Mar 2014 10:06:50 +0000
parents 0798b9e35725
children b0b1375dfd40
files ui/certificate.cpp ui/certificate.h
diffstat 2 files changed, 10 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/ui/certificate.cpp	Fri Mar 21 09:48:46 2014 +0000
+++ b/ui/certificate.cpp	Fri Mar 21 10:06:50 2014 +0000
@@ -2,27 +2,32 @@
 #include <QDebug>
 #include <QObject>
 
+#include <polarssl/x509_crt.h>
+
 Certificate::Certificate(const QString& b64Line) :
     mValid(false),
     mShortDescription(QObject::tr("Invalid Certificate"))
 {
     int ret = -1;
     char buf[2000];
+    x509_crt x509cert;
 
     /* Cut of the first two chars (e.g. I: and decode) */
     QByteArray asn1data = QByteArray::fromBase64(
             b64Line.right(b64Line.size() - 2).toLatin1());
 
-    x509_crt_init(&mX509Cert);
-    ret = x509_crt_parse(&mX509Cert,
+    x509_crt_init(&x509cert);
+    ret = x509_crt_parse(&x509cert,
                          (const unsigned char*) asn1data.constData(),
                          asn1data.size());
     if (ret != 0) {
         qDebug() << "Parsing certificate failed with error: " << ret;
+        x509_crt_free(&x509cert);
         return;
     }
 
-    ret = x509_crt_info(buf, 2000, "", &mX509Cert);
+    ret = x509_crt_info(buf, 2000, "", &x509cert);
+    x509_crt_free(&x509cert);
 
     if (ret <= 0) {
         qDebug() << "Getting certificate info failed with error: " << ret;
@@ -41,8 +46,3 @@
 
     mBaseLine = b64Line;
 }
-
-Certificate::~Certificate()
-{
-    x509_crt_free(&mX509Cert);
-}
--- a/ui/certificate.h	Fri Mar 21 09:48:46 2014 +0000
+++ b/ui/certificate.h	Fri Mar 21 10:06:50 2014 +0000
@@ -14,11 +14,10 @@
 #include <wincrypt.h>
 #endif
 
-#include <polarssl/x509_crt.h>
-
 class Certificate
 {
 public:
+
     /** @brief construct a certificate from a line of a certificate list.
      *
      * The first two characters of the string are expected to be
@@ -26,9 +25,7 @@
      *
      *  @param[in] b64Line The line from the certificate list.
      **/
-    Certificate(const QString& b64Line);
-
-    ~Certificate();
+    Certificate(const QString& b64Line = QString());
 
     /** @brief check if this certificate could be parsed */
     bool isValid() const {return mValid;}
@@ -63,7 +60,5 @@
     QString mDetails;
     QString mShortDescription;
     QString mBaseLine;
-
-    x509_crt mX509Cert;
 };
 #endif

http://wald.intevation.org/projects/trustbridge/