diff ui/certificate.cpp @ 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 ba8a548ff252
children 2551ad24d3c2
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);
-}

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