Branch: master

9d5f5058 2015-09-06 23:11:58 Timothy Pearson
Fix issues with X509 certificate list usage
M tdecore/tdehw/tdecryptographiccarddevice.cpp
M tdecore/tdehw/tdecryptographiccarddevice.h
diff --git a/tdecore/tdehw/tdecryptographiccarddevice.cpp b/tdecore/tdehw/tdecryptographiccarddevice.cpp
index 5686fa8..8cf8092 100644
--- a/tdecore/tdehw/tdecryptographiccarddevice.cpp
+++ b/tdecore/tdehw/tdecryptographiccarddevice.cpp
@@ -16,6 +16,8 @@
    Boston, MA 02110-1301, USA.
 */
 
+#define _TDECRYPTOGRAPHICCARDDEVICE_INTERNAL 1
+
 #include "tdecryptographiccarddevice_private.h"
 #include "tdecryptographiccarddevice.h"
 
@@ -343,9 +345,11 @@
 }
 
 void CryptoCardDeviceWatcher::deleteAllCertificatesFromCache() {
-	X509CertificatePtrListIterator it(cardDevice->m_cardCertificates);
 	X509 *x509_cert;
-	while ((x509_cert = it.current()) != 0) {
+
+	X509CertificatePtrListIterator it;
+	for (it = cardDevice->m_cardCertificates.begin(); it != cardDevice->m_cardCertificates.end(); ++it) {
+		x509_cert = *it;
 		X509_free(x509_cert);
 	}
 
@@ -356,7 +360,6 @@
 	m_watcherThread(NULL),
 	m_watcherObject(NULL),
 	m_cardPresent(false) {
-	m_cardCertificates.setAutoDelete(false);
 }
 
 TDECryptographicCardDevice::~TDECryptographicCardDevice() {
diff --git a/tdecore/tdehw/tdecryptographiccarddevice.h b/tdecore/tdehw/tdecryptographiccarddevice.h
index 2ffdc1a..299ad07 100644
--- a/tdecore/tdehw/tdecryptographiccarddevice.h
+++ b/tdecore/tdehw/tdecryptographiccarddevice.h
@@ -22,12 +22,19 @@
 
 #include "tdegenericdevice.h"
 
-class x509_st;
+#ifndef _TDECRYPTOGRAPHICCARDDEVICE_INTERNAL
+	#ifdef KSSL_HAVE_SSL
+		typedef struct x509_st X509;
+	#else
+		class X509;
+	#endif
+#endif
+
 class TQEventLoopThread;
 class CryptoCardDeviceWatcher;
 
-typedef TQPtrList<x509_st> X509CertificatePtrList;
-typedef TQPtrListIterator<x509_st> X509CertificatePtrListIterator;
+typedef TQValueList<X509*> X509CertificatePtrList;
+typedef TQValueListIterator<X509*> X509CertificatePtrListIterator;
 
 class TDECORE_EXPORT TDECryptographicCardDevice : public TDEGenericDevice
 {