summaryrefslogtreecommitdiff
path: root/xmlsecurity
diff options
context:
space:
mode:
Diffstat (limited to 'xmlsecurity')
-rw-r--r--xmlsecurity/inc/certificatechooser.hxx1
-rw-r--r--xmlsecurity/source/dialogs/certificatechooser.cxx3
2 files changed, 4 insertions, 0 deletions
diff --git a/xmlsecurity/inc/certificatechooser.hxx b/xmlsecurity/inc/certificatechooser.hxx
index 33458c27cd04..494ea40de1e4 100644
--- a/xmlsecurity/inc/certificatechooser.hxx
+++ b/xmlsecurity/inc/certificatechooser.hxx
@@ -51,6 +51,7 @@ class CertificateChooser final : public weld::GenericDialogController
{
private:
std::vector< css::uno::Reference< css::xml::crypto::XXMLSecurityContext > > mxSecurityContexts;
+ std::vector<std::shared_ptr<CertificateChooserUserData>> mvUserData;
bool mbInitialized;
CertificateChooserUserAction const meAction;
diff --git a/xmlsecurity/source/dialogs/certificatechooser.cxx b/xmlsecurity/source/dialogs/certificatechooser.cxx
index 2bae90cd7d70..c95ad1947d0b 100644
--- a/xmlsecurity/source/dialogs/certificatechooser.cxx
+++ b/xmlsecurity/source/dialogs/certificatechooser.cxx
@@ -217,6 +217,9 @@ void CertificateChooser::ImplInitialize(bool mbSearch)
userData->xSecurityContext = secContext;
userData->xSecurityEnvironment = secEnvironment;
+ // Needed to keep userData alive. (reference to shared_ptr prevents delete)
+ mvUserData.push_back(userData);
+
OUString sIssuer = xmlsec::GetContentPart( xCert->getIssuerName(), xCert->getCertificateKind());
OUString sExpDate = utl::GetDateString(xCert->getNotValidAfter());